From 25faf4fc79f09133ab82325774e9e5eaf509e4f4 Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Sun, 10 Jul 2011 12:47:50 +0300 Subject: [PATCH] gobex: Allow calling g_obex_get_rsp later with custom headers --- gobex/gobex-transfer.c | 14 +++++++++----- gobex/gobex-transfer.h | 6 +++--- unit/test-gobex-transfer.c | 2 +- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/gobex/gobex-transfer.c b/gobex/gobex-transfer.c index 189282dfe..500a6c9fc 100644 --- a/gobex/gobex-transfer.c +++ b/gobex/gobex-transfer.c @@ -32,6 +32,8 @@ struct transfer { GObex *obex; + GSList *hdrs; + guint req_id; gint put_id; @@ -369,7 +371,8 @@ static void transfer_get_req(GObex *obex, GObexPacket *req, gpointer user_data) GError *err = NULL; GObexPacket *rsp; - rsp = g_obex_packet_new(G_OBEX_RSP_CONTINUE, TRUE, NULL); + rsp = g_obex_packet_new(G_OBEX_RSP_CONTINUE, TRUE, transfer->hdrs); + transfer->hdrs = NULL; g_obex_packet_add_body(rsp, get_get_data, transfer); if (!g_obex_send(obex, rsp, &err)) { @@ -378,17 +381,18 @@ static void transfer_get_req(GObex *obex, GObexPacket *req, gpointer user_data) } } -guint g_obex_get_rsp(GObex *obex, GObexPacket *req, - GObexDataProducer data_func, GObexFunc complete_func, - gpointer user_data, GError **err) +guint g_obex_get_rsp(GObex *obex, GSList *hdrs, GObexDataProducer data_func, + GObexFunc complete_func, gpointer user_data, + GError **err) { struct transfer *transfer; gint id; transfer = transfer_new(obex, G_OBEX_OP_GET, complete_func, user_data); transfer->data_producer = data_func; + transfer->hdrs = hdrs; - transfer_get_req(obex, req, transfer); + transfer_get_req(obex, NULL, transfer); if (!g_slist_find(transfers, transfer)) return 0; diff --git a/gobex/gobex-transfer.h b/gobex/gobex-transfer.h index a8a004175..21e14c85f 100644 --- a/gobex/gobex-transfer.h +++ b/gobex/gobex-transfer.h @@ -39,9 +39,9 @@ guint g_obex_put_rsp(GObex *obex, GObexPacket *req, GObexDataConsumer data_func, GObexFunc complete_func, gpointer user_data, GError **err); -guint g_obex_get_rsp(GObex *obex, GObexPacket *req, - GObexDataProducer data_func, GObexFunc complete_func, - gpointer user_data, GError **err); +guint g_obex_get_rsp(GObex *obex, GSList *hdrs, GObexDataProducer data_func, + GObexFunc complete_func, gpointer user_data, + GError **err); gboolean g_obex_cancel_transfer(guint id); diff --git a/unit/test-gobex-transfer.c b/unit/test-gobex-transfer.c index ec18ce53b..68c6a5176 100644 --- a/unit/test-gobex-transfer.c +++ b/unit/test-gobex-transfer.c @@ -273,7 +273,7 @@ static void handle_get(GObex *obex, GObexPacket *req, gpointer user_data) return; } - id = g_obex_get_rsp(obex, req, provide_data, transfer_complete, + id = g_obex_get_rsp(obex, NULL, provide_data, transfer_complete, d, &d->err); if (id == 0) g_main_loop_quit(d->mainloop); -- 2.47.3