From 65542c901866bf275804a2a77f96f2c7a81f605c Mon Sep 17 00:00:00 2001 From: Christian Fetzer Date: Tue, 28 May 2013 14:37:13 +0200 Subject: [PATCH] obexd: Queue delete command --- obexd/client/session.c | 39 ++++++++++++++++++++++++++------------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/obexd/client/session.c b/obexd/client/session.c index ac8a10abf..f1915dbd3 100644 --- a/obexd/client/session.c +++ b/obexd/client/session.c @@ -1183,10 +1183,29 @@ guint obc_session_move(struct obc_session *session, const char *srcname, return p->id; } +static int session_process_delete(struct pending_request *p, GError **err) +{ + struct file_data *req = p->data; + + p->req_id = g_obex_delete(p->session->obex, req->srcname, async_cb, p, + err); + if (*err != NULL) + goto fail; + + p->session->p = p; + + return 0; + +fail: + pending_request_free(p); + return (*err)->code; +} + guint obc_session_delete(struct obc_session *session, const char *file, session_callback_t func, void *user_data, GError **err) { + struct file_data *data; struct pending_request *p; if (session->obex == NULL) { @@ -1195,20 +1214,14 @@ guint obc_session_delete(struct obc_session *session, const char *file, return 0; } - if (session->p != NULL) { - g_set_error(err, OBEX_IO_ERROR, OBEX_IO_BUSY, "Session busy"); - return 0; - } - - p = pending_request_new(session, NULL, NULL, func, user_data, NULL); - - p->req_id = g_obex_delete(session->obex, file, async_cb, p, err); - if (*err != NULL) { - pending_request_free(p); - return 0; - } + data = g_new0(struct file_data, 1); + data->srcname = g_strdup(file); + data->func = func; + data->user_data = user_data; - session->p = p; + p = pending_request_new(session, session_process_delete, NULL, + file_op_complete, data, file_data_free); + session_queue(p); return p->id; } -- 2.47.3