--- enums.js | 12 ++++++++++-- main.js | 16 ++++++++++++++-- spicemsg.js | 4 ++++ 3 files changed, 28 insertions(+), 4 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..6a04da9 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); } @@ -385,13 +386,24 @@ SpiceMainConn.prototype.handle_file_xfer_status = function(file_xfer_status) case VD_AGENT_FILE_XFER_STATUS_ERROR: xfer_error = "some errors occurred in the spice agent"; break; - case VD_AGENT_FILE_XFER_STATUS_SUCCESS: + 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..4220d31 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.5 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel