diff options
author | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2014-08-26 16:23:52 +0300 |
---|---|---|
committer | Luiz Augusto von Dentz <luiz.von.dentz@intel.com> | 2014-08-29 10:32:26 +0300 |
commit | a3fd6fe629f3477d4029a514b8856eca35faf038 (patch) | |
tree | d156b371201d7bdbf26d00442fdfc7552158595e /obexd/client/transfer.c | |
parent | ea2636c565646c94a75b9c1a3017e540dc844ce5 (diff) | |
download | bluez-a3fd6fe629f3477d4029a514b8856eca35faf038.tar.gz |
obexd/client: Fix not being able to cancel a suspended transfer
If a transfer is suspended it should be resumed before cancelling
otherwise it will timeout.
Diffstat (limited to 'obexd/client/transfer.c')
-rw-r--r-- | obexd/client/transfer.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/obexd/client/transfer.c b/obexd/client/transfer.c index 0b5735bca..c31a722f9 100644 --- a/obexd/client/transfer.c +++ b/obexd/client/transfer.c @@ -160,6 +160,9 @@ static DBusMessage *obc_transfer_cancel(DBusConnection *connection, ERROR_INTERFACE ".InProgress", "Cancellation already in progress"); + if (transfer->status == TRANSFER_STATUS_SUSPENDED) + g_obex_resume(transfer->obex); + if (transfer->req > 0) { if (!g_obex_cancel_req(transfer->obex, transfer->req, TRUE)) return g_dbus_create_error(message, @@ -414,6 +417,9 @@ static void obc_transfer_free(struct obc_transfer *transfer) { DBG("%p", transfer); + if (transfer->status == TRANSFER_STATUS_SUSPENDED) + g_obex_resume(transfer->obex); + if (transfer->req > 0) g_obex_cancel_req(transfer->obex, transfer->req, TRUE); @@ -659,6 +665,9 @@ static void xfer_complete(GObex *obex, GError *err, gpointer user_data) transfer->progress_id = 0; } + if (transfer->status == TRANSFER_STATUS_SUSPENDED) + g_obex_resume(transfer->obex); + if (err) transfer_set_status(transfer, TRANSFER_STATUS_ERROR); else |