summaryrefslogtreecommitdiff
path: root/gobex
diff options
context:
space:
mode:
authorSzymon Janc <szymon.janc@tieto.com>2014-04-17 15:59:46 +0200
committerJohan Hedberg <johan.hedberg@intel.com>2014-04-25 11:15:15 +0300
commit87dc59894d8ea1396200a5bc66a4d2a5f7666f41 (patch)
tree8982b6539de6808e8b7376737a3cb09e94c01120 /gobex
parent166ef636d7e8a1d7d70f1e7d2ae849add0eab555 (diff)
downloadbluez-87dc59894d8ea1396200a5bc66a4d2a5f7666f41.tar.gz
gobex: Fix removing invalid source
Since GLib 2.39 calling g_source_remove on already removed source is causing critical warning. This was affecting unit/test-gobex-transfer when running with GLib 2.40. /gobex/test_packet_get_req_suspend_resume: (./unit/test-gobex-transfer:28879): GLib-CRITICAL **: Source ID 263 was not found when attempting to remove it Trace/breakpoint trap
Diffstat (limited to 'gobex')
-rw-r--r--gobex/gobex.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/gobex/gobex.c b/gobex/gobex.c
index 887e2a241..3848884cd 100644
--- a/gobex/gobex.c
+++ b/gobex/gobex.c
@@ -263,6 +263,8 @@ static gboolean req_timeout(gpointer user_data)
g_error_free(err);
pending_pkt_free(p);
+ p->timeout_id = 0;
+
return FALSE;
}
@@ -778,7 +780,9 @@ static gboolean pending_req_abort(GObex *obex, GError **err)
p->cancelled = TRUE;
- g_source_remove(p->timeout_id);
+ if (p->timeout_id > 0)
+ g_source_remove(p->timeout_id);
+
p->timeout = G_OBEX_ABORT_TIMEOUT;
p->timeout_id = g_timeout_add_seconds(p->timeout, req_timeout, obex);
@@ -922,7 +926,11 @@ static void g_obex_srm_suspend(GObex *obex)
struct pending_pkt *p = obex->pending_req;
GObexPacket *req;
- g_source_remove(p->timeout_id);
+ if (p->timeout_id > 0) {
+ g_source_remove(p->timeout_id);
+ p->timeout_id = 0;
+ }
+
p->suspended = TRUE;
req = g_obex_packet_new(G_OBEX_OP_GET, TRUE,
@@ -1017,8 +1025,10 @@ static void auth_challenge(GObex *obex)
/* Remove it as pending and add it back to the queue so it gets sent
* again */
- g_source_remove(p->timeout_id);
- p->timeout_id = 0;
+ if (p->timeout_id > 0) {
+ g_source_remove(p->timeout_id);
+ p->timeout_id = 0;
+ }
obex->pending_req = NULL;
g_obex_send_internal(obex, p, NULL);
}
@@ -1076,7 +1086,9 @@ static gboolean parse_response(GObex *obex, GObexPacket *rsp)
* continue sending responses until the transfer is finished
*/
if (opcode == G_OBEX_OP_GET && rspcode == G_OBEX_RSP_CONTINUE) {
- g_source_remove(p->timeout_id);
+ if (p->timeout_id > 0)
+ g_source_remove(p->timeout_id);
+
p->timeout_id = g_timeout_add_seconds(p->timeout, req_timeout,
obex);
return FALSE;