Diff between 514cc9d0bb0761412852d2f7d84fb2434aa42a40 and 5e8a10df925d3c968d2819ba2765eb8e26f05a15

Changed Files

File Additions Deletions Status
obexd/client/session.c +21 -0 modified
obexd/client/session.h +2 -0 modified

Full Patch

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
@@ -1394,3 +1394,24 @@ guint obc_session_delete(struct obc_session *session, const char *file,
 	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
@@ -89,3 +89,5 @@ guint obc_session_move(struct obc_session *session, const char *filename,
 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);