From 6cfe881554ba2f7e5e1dd8cef8277a297ef90dba Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Tue, 5 Jul 2011 21:59:47 +0300 Subject: [PATCH] gobex: Add basic put request parsing to test-server --- tools/obex-server-tool.c | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/tools/obex-server-tool.c b/tools/obex-server-tool.c index 37c95a5d0..92f4aa984 100644 --- a/tools/obex-server-tool.c +++ b/tools/obex-server-tool.c @@ -61,6 +61,38 @@ static void disconn_func(GObex *obex, GError *err, gpointer user_data) g_obex_unref(obex); } +static guint8 handle_put(GObex *obex, GObexPacket *req) +{ + GObexHeader *hdr; + const char *type, *name; + gsize type_len; + + hdr = g_obex_packet_find_header(req, G_OBEX_HDR_ID_TYPE); + if (hdr != NULL) { + g_obex_header_get_bytes(hdr, (const guint8 **) &type, + &type_len); + if (type[type_len - 1] != '\0') { + g_printerr("non-nul terminated type header\n"); + type = NULL; + } + } else + type = NULL; + + hdr = g_obex_packet_find_header(req, G_OBEX_HDR_ID_NAME); + if (hdr != NULL) + g_obex_header_get_unicode(hdr, &name); + else + name = NULL; + + g_print("put type \"%s\" name \"%s\"\n", type ? type : "", + name ? name : ""); + + if (g_obex_packet_find_header(req, G_OBEX_HDR_ID_BODY)) + return G_OBEX_RSP_CONTINUE; + else + return G_OBEX_RSP_SUCCESS; +} + static void req_func(GObex *obex, GObexPacket *req, gpointer user_data) { gboolean final; @@ -74,10 +106,7 @@ static void req_func(GObex *obex, GObexPacket *req, gpointer user_data) rspcode = G_OBEX_RSP_SUCCESS; break; case G_OBEX_OP_PUT: - if (g_obex_packet_find_header(req, G_OBEX_HDR_ID_BODY)) - rspcode = G_OBEX_RSP_CONTINUE; - else - rspcode = G_OBEX_RSP_SUCCESS; + rspcode = handle_put(obex, req); break; default: rspcode = G_OBEX_RSP_NOT_IMPLEMENTED; -- 2.47.3