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