From 46e41cbc06d5fa34ca30624ec72976d1576ae4e0 Mon Sep 17 00:00:00 2001 From: Mikel Astiz Date: Fri, 17 Feb 2012 13:55:32 +0100 Subject: [PATCH] obexd: fix unreported error case The authorization request of a queued transfer could fail, and this needs to be reported to the transfer initiator. Otherwise it would likely result in D-Bus timeouts. --- 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 28516b2cb..85f466a14 100644 --- a/obexd/client/session.c +++ b/obexd/client/session.c @@ -735,17 +735,30 @@ static void session_process_queue(struct obc_session *session) if (session->queue == NULL || g_queue_is_empty(session->queue)) return; + obc_session_ref(session); + while ((p = g_queue_pop_head(session->queue))) { int err; err = pending_request_auth(p); if (err == 0) { session->p = p; - return; + break; + } + + if (p->func) { + GError *gerr = NULL; + + g_set_error(&gerr, OBEX_IO_ERROR, err, + "Authorization failed"); + p->func(session, gerr, p->data); + g_error_free(gerr); } pending_request_free(p); } + + obc_session_unref(session); } static void session_terminate_transfer(struct obc_session *session, -- 2.47.3