diff --git a/obexd/client/session.c b/obexd/client/session.c
index 7e7dea6..a1a528a 100644
--- a/obexd/client/session.c
+++ b/obexd/client/session.c
session->p = p;
return p->id;
}
+
+void obc_session_cancel(struct obc_session *session, guint id,
+ gboolean remove)
+{
+ struct pending_request *p = session->p;
+
+ if (p == NULL || p->id != id)
+ return;
+
+ if (p->req_id == 0)
+ return;
+
+ g_obex_cancel_req(session->obex, p->req_id, remove);
+ if (!remove)
+ return;
+
+ pending_request_free(p);
+ session->p = NULL;
+
+ session_process_queue(session);
+}
diff --git a/obexd/client/session.h b/obexd/client/session.h
index ac5c27a..008b466 100644
--- a/obexd/client/session.h
+++ b/obexd/client/session.h
guint obc_session_delete(struct obc_session *session, const char *file,
session_callback_t func, void *user_data,
GError **err);
+void obc_session_cancel(struct obc_session *session, guint id,
+ gboolean remove);