OSDN Git Service

gobex: Allow calling g_obex_get_rsp later with custom headers
authorJohan Hedberg <johan.hedberg@intel.com>
Sun, 10 Jul 2011 09:47:50 +0000 (12:47 +0300)
committerMarcel Holtmann <marcel@holtmann.org>
Tue, 4 Dec 2012 21:22:01 +0000 (22:22 +0100)
gobex/gobex-transfer.c
gobex/gobex-transfer.h
unit/test-gobex-transfer.c

index 189282d..500a6c9 100644 (file)
@@ -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;
 
index a8a0041..21e14c8 100644 (file)
@@ -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);
 
index ec18ce5..68c6a51 100644 (file)
@@ -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);