Blame SOURCES/0023-Report-an-error-when-file-transfers-are-disabled.patch

46eaa5
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
46eaa5
From: Christophe Fergeau <cfergeau@redhat.com>
46eaa5
Date: Tue, 8 Apr 2014 16:11:38 +0200
46eaa5
Subject: [PATCH] Report an error when file transfers are disabled
46eaa5
46eaa5
This commit sends back a VD_AGENT_FILE_XFER_STATUS_ERROR to clients which
46eaa5
try to transfer files when the agent disabled file transfers (for example
46eaa5
because there is no valid destination directory for the transferred files).
46eaa5
46eaa5
(cherry picked from commit 9ea18740b8cf4466ebd2f6bca42d1d70dd0ba01c)
46eaa5
---
46eaa5
 src/vdagent-file-xfers.c | 8 ++++++++
46eaa5
 src/vdagent-file-xfers.h | 2 ++
46eaa5
 src/vdagent.c            | 9 +++++++++
46eaa5
 3 files changed, 19 insertions(+)
46eaa5
46eaa5
diff --git a/src/vdagent-file-xfers.c b/src/vdagent-file-xfers.c
46eaa5
index d59910b..0dc549b 100644
46eaa5
--- a/src/vdagent-file-xfers.c
46eaa5
+++ b/src/vdagent-file-xfers.c
46eaa5
@@ -316,3 +316,11 @@ void vdagent_file_xfers_data(struct vdagent_file_xfers *xfers,
46eaa5
         g_hash_table_remove(xfers->xfers, GUINT_TO_POINTER(msg->id));
46eaa5
     }
46eaa5
 }
46eaa5
+
46eaa5
+void vdagent_file_xfers_error(struct udscs_connection *vdagentd, uint32_t msg_id)
46eaa5
+{
46eaa5
+    g_return_if_fail(vdagentd != NULL);
46eaa5
+
46eaa5
+    udscs_write(vdagentd, VDAGENTD_FILE_XFER_STATUS,
46eaa5
+                msg_id, VD_AGENT_FILE_XFER_STATUS_ERROR, NULL, 0);
46eaa5
+}
46eaa5
diff --git a/src/vdagent-file-xfers.h b/src/vdagent-file-xfers.h
46eaa5
index 20783eb..fe5da81 100644
46eaa5
--- a/src/vdagent-file-xfers.h
46eaa5
+++ b/src/vdagent-file-xfers.h
46eaa5
@@ -37,5 +37,7 @@ void vdagent_file_xfers_status(struct vdagent_file_xfers *xfers,
46eaa5
     VDAgentFileXferStatusMessage *msg);
46eaa5
 void vdagent_file_xfers_data(struct vdagent_file_xfers *xfers,
46eaa5
     VDAgentFileXferDataMessage *msg);
46eaa5
+void vdagent_file_xfers_error(struct udscs_connection *vdagentd,
46eaa5
+    uint32_t msg_id);
46eaa5
 
46eaa5
 #endif
46eaa5
diff --git a/src/vdagent.c b/src/vdagent.c
46eaa5
index 32c84e5..a0ba79e 100644
46eaa5
--- a/src/vdagent.c
46eaa5
+++ b/src/vdagent.c
46eaa5
@@ -92,6 +92,9 @@ void daemon_read_complete(struct udscs_connection **connp,
46eaa5
         if (vdagent_file_xfers != NULL) {
46eaa5
             vdagent_file_xfers_start(vdagent_file_xfers,
46eaa5
                                      (VDAgentFileXferStartMessage *)data);
46eaa5
+        } else {
46eaa5
+            vdagent_file_xfers_error(*connp,
46eaa5
+                                     ((VDAgentFileXferStartMessage *)data)->id);
46eaa5
         }
46eaa5
         free(data);
46eaa5
         break;
46eaa5
@@ -99,6 +102,9 @@ void daemon_read_complete(struct udscs_connection **connp,
46eaa5
         if (vdagent_file_xfers != NULL) {
46eaa5
             vdagent_file_xfers_status(vdagent_file_xfers,
46eaa5
                                       (VDAgentFileXferStatusMessage *)data);
46eaa5
+        } else {
46eaa5
+            vdagent_file_xfers_error(*connp,
46eaa5
+                                     ((VDAgentFileXferStatusMessage *)data)->id);
46eaa5
         }
46eaa5
         free(data);
46eaa5
         break;
46eaa5
@@ -116,6 +122,9 @@ void daemon_read_complete(struct udscs_connection **connp,
46eaa5
         if (vdagent_file_xfers != NULL) {
46eaa5
             vdagent_file_xfers_data(vdagent_file_xfers,
46eaa5
                                     (VDAgentFileXferDataMessage *)data);
46eaa5
+        } else {
46eaa5
+            vdagent_file_xfers_error(*connp,
46eaa5
+                                     ((VDAgentFileXferDataMessage *)data)->id);
46eaa5
         }
46eaa5
         free(data);
46eaa5
         break;