static void session_process_queue(struct obc_session *session) { struct pending_request *p; if (session->p != NULL) return; if (session->queue == NULL || g_queue_is_empty(session->queue)) return; obc_session_ref(session); while ((p = g_queue_pop_head(session->queue))) { GError *gerr = NULL; DBG("Transfer(%p) started", p->transfer); if (obc_transfer_start(p->transfer, session->obex, &gerr)) { session->p = p; break; } if (p->func) p->func(session, p->transfer, gerr, p->data); g_clear_error(&gerr); pending_request_free(p); } obc_session_unref(session); }
static int session_process_transfer(struct pending_request *p, GError **err) { if (!obc_transfer_start(p->transfer, p->session->obex, err)) return -1; DBG("Tranfer(%p) started", p->transfer); p->session->p = p; return 0; }