diff --git a/obexd/client/session.c b/obexd/client/session.c
index b994080..3a8807b 100644
--- a/obexd/client/session.c
+++ b/obexd/client/session.c
"Session closed by user");
if (session->p != NULL && session->p->id != 0) {
- if (session->p->func)
- session->p->func(session, session->p->transfer, err,
- session->p->data);
-
- pending_request_free(session->p);
+ p = session->p;
session->p = NULL;
+
+ if (p->func)
+ p->func(session, p->transfer, err, p->data);
+
+ pending_request_free(p);
}
while ((p = g_queue_pop_head(session->queue))) {
p = match->data;
g_queue_delete_link(session->queue, match);
- }
-
- p->id = 0;
+ } else
+ session->p = NULL;
obc_session_ref(session);
pending_request_free(p);
- if (p == session->p) {
- session->p = NULL;
+ if (session->p == NULL)
session_process_queue(session);
- }
obc_session_unref(session);
}