Blame SOURCES/0024-vdagentd-send-file-xfer-status-generic-version.patch

46eaa5
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
46eaa5
From: Victor Toso <victortoso@redhat.com>
46eaa5
Date: Tue, 3 May 2016 10:25:52 +0200
46eaa5
Subject: [PATCH] vdagentd: send file-xfer status, generic version
46eaa5
46eaa5
Change cancel_file_xfer() helper function to file_xfer_status() so we
46eaa5
can send other status to the client.
46eaa5
46eaa5
Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
46eaa5
(cherry picked from commit b5f0352e9e5ea91eff0880674cbc5080e78c9e5b)
46eaa5
---
46eaa5
 src/vdagentd.c | 18 +++++++++++-------
46eaa5
 1 file changed, 11 insertions(+), 7 deletions(-)
46eaa5
46eaa5
diff --git a/src/vdagentd.c b/src/vdagentd.c
46eaa5
index 594f36b..2c8e973 100644
46eaa5
--- a/src/vdagentd.c
46eaa5
+++ b/src/vdagentd.c
46eaa5
@@ -244,12 +244,14 @@ static void do_client_clipboard(struct vdagent_virtio_port *vport,
46eaa5
                 data, size);
46eaa5
 }
46eaa5
 
46eaa5
-static void cancel_file_xfer(struct vdagent_virtio_port *vport,
46eaa5
-                             const char *msg, uint32_t id)
46eaa5
+/* To be used by vdagentd for failures in file-xfer such as when file-xfer was
46eaa5
+ * cancelled or an error happened */
46eaa5
+static void send_file_xfer_status(struct vdagent_virtio_port *vport,
46eaa5
+                                  const char *msg, uint32_t id, uint32_t xfer_status)
46eaa5
 {
46eaa5
     VDAgentFileXferStatusMessage status = {
46eaa5
         .id = id,
46eaa5
-        .result = VD_AGENT_FILE_XFER_STATUS_CANCELLED,
46eaa5
+        .result = xfer_status,
46eaa5
     };
46eaa5
     syslog(LOG_WARNING, msg, id);
46eaa5
     if (vport)
46eaa5
@@ -269,10 +271,10 @@ static void do_client_file_xfer(struct vdagent_virtio_port *vport,
46eaa5
     case VD_AGENT_FILE_XFER_START: {
46eaa5
         VDAgentFileXferStartMessage *s = (VDAgentFileXferStartMessage *)data;
46eaa5
         if (!active_session_conn) {
46eaa5
-            cancel_file_xfer(vport,
46eaa5
+            send_file_xfer_status(vport,
46eaa5
                "Could not find an agent connnection belonging to the "
46eaa5
                "active session, cancelling client file-xfer request %u",
46eaa5
-               s->id);
46eaa5
+               s->id, VD_AGENT_FILE_XFER_STATUS_CANCELLED);
46eaa5
             return;
46eaa5
         }
46eaa5
         udscs_write(active_session_conn, VDAGENTD_FILE_XFER_START, 0, 0,
46eaa5
@@ -617,8 +619,10 @@ void update_active_session_connection(struct udscs_connection *new_conn)
46eaa5
 gboolean remove_active_xfers(gpointer key, gpointer value, gpointer conn)
46eaa5
 {
46eaa5
     if (value == conn) {
46eaa5
-        cancel_file_xfer(virtio_port, "Agent disc; cancelling file-xfer %u",
46eaa5
-                         GPOINTER_TO_UINT(key));
46eaa5
+        send_file_xfer_status(virtio_port,
46eaa5
+                              "Agent disc; cancelling file-xfer %u",
46eaa5
+                              GPOINTER_TO_UINT(key),
46eaa5
+                              VD_AGENT_FILE_XFER_STATUS_CANCELLED);
46eaa5
         return 1;
46eaa5
     } else
46eaa5
         return 0;