summaryrefslogtreecommitdiff
path: root/gobex
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2014-08-27 19:00:24 +0300
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2014-08-29 10:32:27 +0300
commit31d69f8ecf50b5fbad3a718949553c59bf6ba3f4 (patch)
treeef62fa3e917ea3816bfdb289016ca9d559e542e8 /gobex
parent3ff1f6b5e8902c6e7c37db0e84cd284648b4d272 (diff)
downloadbluez-31d69f8ecf50b5fbad3a718949553c59bf6ba3f4.tar.gz
gobex: Abort if there is no request to cancel
If there is no request to cancel send an abort since otherwise the remote may hang waiting.
Diffstat (limited to 'gobex')
-rw-r--r--gobex/gobex-transfer.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/gobex/gobex-transfer.c b/gobex/gobex-transfer.c
index 4e1a6c042..6720129b6 100644
--- a/gobex/gobex-transfer.c
+++ b/gobex/gobex-transfer.c
@@ -653,8 +653,13 @@ gboolean g_obex_cancel_transfer(guint id, GObexFunc complete_func,
transfer->complete_func = complete_func;
transfer->user_data = user_data;
- if (transfer->req_id == 0)
- goto done;
+ if (!transfer->req_id) {
+ transfer->req_id = g_obex_abort(transfer->obex,
+ transfer_abort_response,
+ transfer, NULL);
+ if (transfer->req_id)
+ return TRUE;
+ }
ret = g_obex_cancel_req(transfer->obex, transfer->req_id, FALSE);
if (ret)