diff --git a/obexd/client/session.c b/obexd/client/session.c
index 417295e..c4645fb 100644
--- a/obexd/client/session.c
+++ b/obexd/client/session.c
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)