summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVictor Toso <victortoso@redhat.com>2016-05-03 10:25:52 +0200
committerVictor Toso <victortoso@redhat.com>2016-05-04 09:22:59 +0200
commitb5f0352e9e5ea91eff0880674cbc5080e78c9e5b (patch)
tree5faad6767f015b7e18c5f46c35674cc29266dc84
parentb1b8b71961b9a28cc4896e9973d3a3c1975ead39 (diff)
vdagentd: send file-xfer status, generic version
Change cancel_file_xfer() helper function to file_xfer_status() so we can send other status to the client. Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
-rw-r--r--src/vdagentd.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/vdagentd.c b/src/vdagentd.c
index 69332ff..66afeaa 100644
--- a/src/vdagentd.c
+++ b/src/vdagentd.c
@@ -249,12 +249,14 @@ static void do_client_clipboard(struct vdagent_virtio_port *vport,
data, size);
}
-static void cancel_file_xfer(struct vdagent_virtio_port *vport,
- const char *msg, uint32_t id)
+/* To be used by vdagentd for failures in file-xfer such as when file-xfer was
+ * cancelled or an error happened */
+static void send_file_xfer_status(struct vdagent_virtio_port *vport,
+ const char *msg, uint32_t id, uint32_t xfer_status)
{
VDAgentFileXferStatusMessage status = {
.id = id,
- .result = VD_AGENT_FILE_XFER_STATUS_CANCELLED,
+ .result = xfer_status,
};
syslog(LOG_WARNING, msg, id);
if (vport)
@@ -274,10 +276,10 @@ static void do_client_file_xfer(struct vdagent_virtio_port *vport,
case VD_AGENT_FILE_XFER_START: {
VDAgentFileXferStartMessage *s = (VDAgentFileXferStartMessage *)data;
if (!active_session_conn) {
- cancel_file_xfer(vport,
+ send_file_xfer_status(vport,
"Could not find an agent connnection belonging to the "
"active session, cancelling client file-xfer request %u",
- s->id);
+ s->id, VD_AGENT_FILE_XFER_STATUS_CANCELLED);
return;
}
udscs_write(active_session_conn, VDAGENTD_FILE_XFER_START, 0, 0,
@@ -648,8 +650,10 @@ static void update_active_session_connection(struct udscs_connection *new_conn)
static gboolean remove_active_xfers(gpointer key, gpointer value, gpointer conn)
{
if (value == conn) {
- cancel_file_xfer(virtio_port, "Agent disc; cancelling file-xfer %u",
- GPOINTER_TO_UINT(key));
+ send_file_xfer_status(virtio_port,
+ "Agent disc; cancelling file-xfer %u",
+ GPOINTER_TO_UINT(key),
+ VD_AGENT_FILE_XFER_STATUS_CANCELLED);
return 1;
} else
return 0;