summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--client/transfer.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/client/transfer.c b/client/transfer.c
index f296638..cb7c26c 100644
--- a/client/transfer.c
+++ b/client/transfer.c
@@ -204,10 +204,20 @@ static DBusMessage *obc_transfer_cancel(DBusConnection *connection,
ERROR_INTERFACE ".InProgress",
"Cancellation already in progress");
- if (transfer->xfer == 0)
- return g_dbus_create_error(message,
- ERROR_INTERFACE ".Failed",
- "Failed");
+ if (transfer->xfer == 0) {
+ struct transfer_callback *callback = transfer->callback;
+
+ if (callback != NULL) {
+ GError *err;
+
+ err = g_error_new(OBC_TRANSFER_ERROR, -ECANCELED, "%s",
+ "Transfer cancelled by user");
+ callback->func(transfer, err, callback->data);
+ g_error_free(err);
+ }
+
+ return dbus_message_new_method_return(message);
+ }
if (transfer->progress_id != 0) {
g_source_remove(transfer->progress_id);