diff --git a/src/appmessage.c b/src/appmessage.c index ef91c5a..53f5b76 100644 --- a/src/appmessage.c +++ b/src/appmessage.c @@ -81,6 +81,7 @@ AppMessage * appmessage_new_deserialize(Buffer * buffer) AppMessage * message; char const * data = buffer_get_data(buffer); size_t size = buffer_get_size(buffer); + size_t pos = 0; size_t s; Variable * v; uint32_t u32; @@ -91,11 +92,14 @@ AppMessage * appmessage_new_deserialize(Buffer * buffer) if((message = object_new(sizeof(*message))) == NULL) return NULL; s = size; - if((v = variable_new_deserialize_type(VT_UINT32, &s, data)) == NULL) + if((v = variable_new_deserialize_type(VT_UINT32, &s, &data[pos])) + == NULL) { object_delete(message); return NULL; } + pos += s; + size -= s; /* XXX may fail */ variable_get_as(v, VT_UINT32, &u32); variable_delete(v); @@ -105,8 +109,19 @@ AppMessage * appmessage_new_deserialize(Buffer * buffer) #ifdef DEBUG fprintf(stderr, "DEBUG: %s() AMT_CALL\n", __func__); #endif + s = size; + v = variable_new_deserialize_type(VT_STRING, &s, + &data[pos]); + if(v == NULL) + { + error_set_code(1, "%s%u", "Unknown method "); + object_delete(message); + return NULL; + } + /* XXX may fail */ + variable_get_as(v, VT_STRING, &message->t.call.method); + variable_delete(v); /* FIXME really implement */ - message->t.call.method = NULL; message->t.call.var = NULL; message->t.call.var_cnt = 0; break; diff --git a/src/apptransport.c b/src/apptransport.c index 4738817..6212ab7 100644 --- a/src/apptransport.c +++ b/src/apptransport.c @@ -1,5 +1,5 @@ /* $Id$ */ -/* Copyright (c) 2012 Pierre Pronchery */ +/* Copyright (c) 2012-2013 Pierre Pronchery */ /* This file is part of DeforaOS System libApp */ /* This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -15,8 +15,12 @@ +#ifdef DEBUG +# include +#endif #include #include +#include "App/appmessage.h" #include "apptransport.h" #include "../config.h" @@ -105,6 +109,11 @@ void apptransport_delete(AppTransport * transport) static int _apptransport_helper_client_receive(AppTransport * transport, AppTransportClient * client, AppMessage * message) { +#ifdef DEBUG + fprintf(stderr, "DEBUG: %s() %u \"%s\"\n", __func__, + appmessage_get_type(message), + appmessage_get_method(message)); +#endif /* FIXME implement */ return 0; }