upgrade obexd to 0.47
[profile/ivi/obexd.git] / gobex / gobex-transfer.c
index a779e4f..724c788 100644 (file)
@@ -501,6 +501,7 @@ static gssize get_get_data(void *buf, gsize len, gpointer user_data)
        GObexPacket *req, *rsp;
        GError *err = NULL;
        gssize ret;
+       guint8 op;
 
        g_obex_debug(G_OBEX_DEBUG_TRANSFER, "transfer %u", transfer->id);
 
@@ -530,8 +531,9 @@ static gssize get_get_data(void *buf, gsize len, gpointer user_data)
                return ret;
        }
 
-       req = g_obex_packet_new(G_OBEX_RSP_INTERNAL_SERVER_ERROR, TRUE,
-                                                       G_OBEX_HDR_INVALID);
+       op = g_obex_errno_to_rsp(ret);
+
+       req = g_obex_packet_new(op, TRUE, G_OBEX_HDR_INVALID);
        g_obex_send(transfer->obex, req, NULL);
 
        err = g_error_new(G_OBEX_ERROR, G_OBEX_ERROR_CANCELLED,
@@ -622,9 +624,11 @@ guint g_obex_get_rsp(GObex *obex, GObexDataProducer data_func,
                                                        user_data, err);
 }
 
-gboolean g_obex_cancel_transfer(guint id)
+gboolean g_obex_cancel_transfer(guint id, GObexFunc complete_func,
+                       gpointer user_data)
 {
        struct transfer *transfer = NULL;
+       gboolean ret = TRUE;
 
        g_obex_debug(G_OBEX_DEBUG_TRANSFER, "transfer %u", id);
 
@@ -633,6 +637,17 @@ gboolean g_obex_cancel_transfer(guint id)
        if (transfer == NULL)
                return FALSE;
 
+       if (complete_func == NULL)
+               goto done;
+
+       transfer->complete_func = complete_func;
+       transfer->user_data = user_data;
+
+       ret = g_obex_pending_req_abort(transfer->obex, NULL);
+       if (ret)
+               return TRUE;
+
+done:
        transfer_free(transfer);
-       return TRUE;
+       return ret;
 }