From 942bfc969d185e7122937fe2b042e698b142fc91 Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Mon, 16 Apr 2012 13:40:07 +0300 Subject: [PATCH] obexd: Fix regression when calling obc_session_shutdown within callback Commit c07ddfbd019d3545cce2d7ec694143cdc55a2167 introduced the freeing of the active pending request on obc_session_shutdown without checking if the request was already processed/terminated. --- obexd/client/session.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/obexd/client/session.c b/obexd/client/session.c index 51acbfabd..868eb9f41 100644 --- a/obexd/client/session.c +++ b/obexd/client/session.c @@ -494,7 +494,7 @@ void obc_session_shutdown(struct obc_session *session) err = g_error_new(OBEX_IO_ERROR, OBEX_IO_DISCONNECTED, "Session closed by user"); - if (session->p != NULL) { + if (session->p != NULL && session->p->id != 0) { if (session->p->func) session->p->func(session, err, session->p->data); @@ -821,6 +821,8 @@ static void session_terminate_transfer(struct obc_session *session, g_queue_delete_link(session->queue, match); } + p->id = 0; + obc_session_ref(session); if (p->func) -- 2.47.3