From 5eb7afa856aa2e5f4733c8db6dc21fa8d63ba964 Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Fri, 8 Jul 2011 11:48:59 +0200 Subject: [PATCH] gobex: Fix g_obex_get_rsp end of transfer handling --- gobex/gobex-transfer.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/gobex/gobex-transfer.c b/gobex/gobex-transfer.c index 6fe0e6ba7..b215d297c 100644 --- a/gobex/gobex-transfer.c +++ b/gobex/gobex-transfer.c @@ -344,8 +344,13 @@ static gssize get_get_data(void *buf, gsize len, gpointer user_data) gssize ret; ret = transfer->data_producer(buf, len, transfer->user_data); - if (ret >= 0) + if (ret > 0) + return ret; + + if (ret == 0) { + transfer_complete(transfer, NULL); return ret; + } req = g_obex_packet_new(G_OBEX_RSP_INTERNAL_SERVER_ERROR, TRUE, NULL); g_obex_send(transfer->obex, req, NULL); @@ -365,7 +370,7 @@ static void transfer_get_req(GObex *obex, GObexPacket *req, gpointer user_data) GObexPacket *rsp; rsp = g_obex_packet_new(G_OBEX_RSP_CONTINUE, TRUE, NULL); - g_obex_packet_add_body(req, get_get_data, transfer); + g_obex_packet_add_body(rsp, get_get_data, transfer); if (!g_obex_send(obex, rsp, &err)) { transfer_complete(transfer, err); @@ -383,7 +388,7 @@ guint g_obex_get_rsp(GObex *obex, GObexPacket *req, transfer = transfer_new(obex, G_OBEX_OP_GET, complete_func, user_data); transfer->data_producer = data_func; - transfer_put_req(obex, req, transfer); + transfer_get_req(obex, req, transfer); if (!g_slist_find(transfers, transfer)) return 0; -- 2.47.3