--- 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 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel