From 1eeaea68310ae7e0ee4ceecadd3e169227a65582 Mon Sep 17 00:00:00 2001 From: Mikel Astiz Date: Tue, 28 Feb 2012 13:56:21 +0100 Subject: [PATCH] obexd: fix unreported canceled transfers A session can be shut down from D-Bus, and therefore the pending transfer callbacks must be reported. --- obexd/client/session.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/obexd/client/session.c b/obexd/client/session.c index 417295ed4..c4645fbd9 100644 --- a/obexd/client/session.c +++ b/obexd/client/session.c @@ -485,12 +485,25 @@ proceed: void obc_session_shutdown(struct obc_session *session) { + struct pending_request *p; + GError *err; + DBG("%p", session); obc_session_ref(session); /* Unregister any pending transfer */ - g_queue_foreach(session->queue, (GFunc) pending_request_free, NULL); + err = g_error_new(OBEX_IO_ERROR, OBEX_IO_DISCONNECTED, + "Session closed by user"); + + while ((p = g_queue_pop_head(session->queue))) { + if (p->func) + p->func(session, err, p->data); + + pending_request_free(p); + } + + g_error_free(err); /* Unregister interfaces */ if (session->path) -- 2.47.3