Diff between 60b2e582097591547728e7c81d20460dd41c1466 and 9d13a70842cf4c23d2e4c4f50a9a402748b99c94

Changed Files

File Additions Deletions Status
obexd/client/transfer.c +14 -4 modified

Full Patch

diff --git a/obexd/client/transfer.c b/obexd/client/transfer.c
index f296638..cb7c26c 100644
--- a/obexd/client/transfer.c
+++ b/obexd/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);