According to vdagent fileXfer, it requires a
VD_AGENT_FILE_XFER_STATUS_CANCELLED
msg when user cancel a file transfer. Currently our code only
send VD_AGENT_FILE_XFER_STATUS_ERROR,
this will cause the vdagent lock the file until it restart, you can't
remove the broken file.

diff --git a/src/channel-main.c b/src/channel-main.c
index 8138fd5..7a9af7b 100644
--- a/src/channel-main.c
+++ b/src/channel-main.c
@@ -1922,7 +1922,8 @@ static void file_xfer_read_cb(GObject *source_object,
     } else if (error) {
         VDAgentFileXferStatusMessage msg = {
             .id = self->priv->id,
-            .result = VD_AGENT_FILE_XFER_STATUS_ERROR,
+            .result = error->code == G_IO_ERROR_CANCELLED ?
+                    VD_AGENT_FILE_XFER_STATUS_CANCELLED :
VD_AGENT_FILE_XFER_STATUS_ERROR,
         };
         agent_msg_queue_many(self->priv->channel,
VD_AGENT_FILE_XFER_STATUS,
                              &msg, sizeof(msg), NULL);
-- 
Jay.Han
_______________________________________________
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/spice-devel

Reply via email to