[Spice-devel] [PATCH spice-html5 1/2] main: Add messages for file transfer detailed errors

Tomáš Bohdálek tom.bohdalek at gmail.com
Wed Sep 6 08:52:41 UTC 2017


---
 enums.js    | 12 ++++++++++--
 main.js     | 16 +++++++++++++++-
 spicemsg.js |  4 ++++
 3 files changed, 29 insertions(+), 3 deletions(-)

diff --git a/enums.js b/enums.js
index d5a9003..7154595 100644
--- a/enums.js
+++ b/enums.js
@@ -369,12 +369,20 @@ var VD_AGENT_CAP_MOUSE_STATE            = 0,
     VD_AGENT_CAP_GUEST_LINEEND_LF       = 8,
     VD_AGENT_CAP_GUEST_LINEEND_CRLF     = 9,
     VD_AGENT_CAP_MAX_CLIPBOARD          = 10,
-    VD_AGENT_END_CAP                    = 11;
+    VD_AGENT_CAP_AUDIO_VOLUME_SYNC      = 11,
+    VD_AGENT_CAP_MONITORS_CONFIG_POSITION  = 12,
+    VD_AGENT_CAP_FILE_XFER_DISABLED        = 13,
+    VD_AGENT_CAP_FILE_XFER_DETAILED_ERRORS = 14,
+    VD_AGENT_END_CAP                       = 15;
 
 var VD_AGENT_FILE_XFER_STATUS_CAN_SEND_DATA = 0,
     VD_AGENT_FILE_XFER_STATUS_CANCELLED     = 1,
     VD_AGENT_FILE_XFER_STATUS_ERROR         = 2,
-    VD_AGENT_FILE_XFER_STATUS_SUCCESS       = 3;
+    VD_AGENT_FILE_XFER_STATUS_SUCCESS       = 3,
+    VD_AGENT_FILE_XFER_STATUS_NOT_ENOUGH_SPACE    = 4,
+    VD_AGENT_FILE_XFER_STATUS_SESSION_LOCKED      = 5,
+    VD_AGENT_FILE_XFER_STATUS_AGENT_NOT_CONNECTED = 6,
+    VD_AGENT_FILE_XFER_STATUS_DISABLED            = 7;
 
 var SPICE_STREAM_FLAGS_TOP_DOWN = (1 << 0);
 
diff --git a/main.js b/main.js
index 173ff97..0237f0e 100644
--- a/main.js
+++ b/main.js
@@ -344,7 +344,8 @@ SpiceMainConn.prototype.announce_agent_capabilities = function(request)
 {
     var caps = new VDAgentAnnounceCapabilities(request, (1 << VD_AGENT_CAP_MOUSE_STATE) |
                                                         (1 << VD_AGENT_CAP_MONITORS_CONFIG) |
-                                                        (1 << VD_AGENT_CAP_REPLY));
+                                                        (1 << VD_AGENT_CAP_REPLY) |
+                                                        (1 << VD_AGENT_CAP_FILE_XFER_DETAILED_ERRORS));
     this.send_agent_message(VD_AGENT_ANNOUNCE_CAPABILITIES, caps);
 }
 
@@ -387,11 +388,24 @@ SpiceMainConn.prototype.handle_file_xfer_status = function(file_xfer_status)
             break;
         case VD_AGENT_FILE_XFER_STATUS_SUCCESS:
             break;
+        case VD_AGENT_FILE_XFER_STATUS_NOT_ENOUGH_SPACE:
+            xfer_error = "not enough space in the remote system";
+            break;
+        case VD_AGENT_FILE_XFER_STATUS_SESSION_LOCKED:
+            xfer_error = "remote system is locked";
+            break;
+        case VD_AGENT_FILE_XFER_STATUS_AGENT_NOT_CONNECTED:
+            xfer_error = "spice angent is not connected";
+            break;
+        case VD_AGENT_FILE_XFER_STATUS_DISABLED:
+            xfer_error = "file transfer is disabled on the remote system";
+            break;
         default:
             xfer_error = "unhandled status type: " + file_xfer_status.result;
             break;
     }
 
+    xfer_error = "File transfer: " + xfer_error;
     this.file_xfer_completed(xfer_task, xfer_error)
 }
 
diff --git a/spicemsg.js b/spicemsg.js
index 3619996..7ebc64b 100644
--- a/spicemsg.js
+++ b/spicemsg.js
@@ -577,6 +577,10 @@ VDAgentFileXferStatusMessage.prototype =
         var dv = new SpiceDataView(a);
         this.id = dv.getUint32(at, true); at += 4;
         this.result = dv.getUint32(at, true); at += 4;
+        if (this.result >= VD_AGENT_FILE_XFER_STATUS_NOT_ENOUGH_SPACE)
+        {
+            this.data = dv.getUint64(at, true); at += 8;
+        }
         return at;
     },
     buffer_size: function()
-- 
2.9.4



More information about the Spice-devel mailing list