Diff between a9c668bd03ef1716dc15cec1641c145fc5e62d01 and fc5c121427ee4300bafd5a8327e9b805a1509243

Changed Files

File Additions Deletions Status
obexd/client/session.c +11 -1 modified

Full Patch

diff --git a/obexd/client/session.c b/obexd/client/session.c
index ce3432d..223a2d3 100644
--- a/obexd/client/session.c
+++ b/obexd/client/session.c
@@ -89,6 +89,9 @@ struct agent_data {
 
 static void session_prepare_put(struct session_data *session, GError *err,
 								void *data);
+static void session_terminate_transfer(struct session_data *session,
+					struct transfer_data *transfer,
+					GError *gerr);
 
 static GQuark obex_io_error_quark(void)
 {
@@ -803,11 +806,18 @@ static void session_request_reply(DBusPendingCall *call, gpointer user_data)
 
 	dbus_error_init(&derr);
 	if (dbus_set_error_from_message(&derr, reply)) {
+		GError *gerr = NULL;
+
 		error("Replied with an error: %s, %s",
 				derr.name, derr.message);
 		dbus_error_free(&derr);
 		dbus_message_unref(reply);
-		transfer_unregister(pending->transfer);
+
+		g_set_error(&gerr, OBEX_IO_ERROR, -ECANCELED, "%s",
+								derr.message);
+		session_terminate_transfer(session, pending->transfer, gerr);
+		g_clear_error(&gerr);
+
 		return;
 	}