mirror of
https://gitlab.uni-freiburg.de/opensourcevdi/spice-gtk
synced 2026-02-03 11:59:15 +00:00
main: to let SpiceFileTransferTask handle errors
* on VD_AGENT_FILE_XFER_STATUS_CAN_SEND_DATA, if the file-transfer is on pending state, spice_file_transfer_task_read_async() will call the callback with error set. * on VD_AGENT_FILE_XFER_STATUS_SUCCESS, if the file-transfer is on pending state, spice_file_transfer_task_completed() will set the error for this task. Acked-by: Jonathon Jongsma <jjongsma@redhat.com>
This commit is contained in:
parent
202ff31fe4
commit
fcdc04dc83
@ -1993,11 +1993,6 @@ static void spice_file_transfer_task_handle_status(SpiceFileTransferTask *task,
|
||||
|
||||
switch (msg->result) {
|
||||
case VD_AGENT_FILE_XFER_STATUS_CAN_SEND_DATA:
|
||||
if (task->pending) {
|
||||
error = g_error_new(SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
|
||||
"transfer received CAN_SEND_DATA in pending state");
|
||||
break;
|
||||
}
|
||||
spice_file_transfer_task_read_async(task, file_xfer_read_async_cb, NULL);
|
||||
return;
|
||||
case VD_AGENT_FILE_XFER_STATUS_CANCELLED:
|
||||
@ -2009,9 +2004,6 @@ static void spice_file_transfer_task_handle_status(SpiceFileTransferTask *task,
|
||||
"some errors occurred in the spice agent");
|
||||
break;
|
||||
case VD_AGENT_FILE_XFER_STATUS_SUCCESS:
|
||||
if (task->pending)
|
||||
error = g_error_new(SPICE_CLIENT_ERROR, SPICE_CLIENT_ERROR_FAILED,
|
||||
"transfer received success in pending state");
|
||||
break;
|
||||
default:
|
||||
g_warn_if_reached();
|
||||
@ -3000,8 +2992,15 @@ static void spice_file_transfer_task_completed(SpiceFileTransferTask *self,
|
||||
&msg, sizeof(msg), NULL);
|
||||
}
|
||||
|
||||
if (self->pending)
|
||||
if (self->pending) {
|
||||
/* Complete but pending is okay only if error is set */
|
||||
if (self->error == NULL) {
|
||||
self->error = g_error_new(SPICE_CLIENT_ERROR,
|
||||
SPICE_CLIENT_ERROR_FAILED,
|
||||
"Cannot complete task in pending state");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (!self->file_stream) {
|
||||
file_xfer_close_cb(NULL, NULL, self);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user