Module: kamailio Branch: master Commit: 8f87e7c4c3ba925a20bd0ab69e1fc885a559d262 URL: https://github.com/kamailio/kamailio/commit/8f87e7c4c3ba925a20bd0ab69e1fc885...
Author: Ovidiu Sas osas@voipembedded.com Committer: Ovidiu Sas osas@voipembedded.com Date: 2017-05-10T13:00:57-04:00
xhttp_rpc: fix rpc_struct_printf
---
Modified: src/modules/xhttp_rpc/xhttp_rpc.c
---
Diff: https://github.com/kamailio/kamailio/commit/8f87e7c4c3ba925a20bd0ab69e1fc885... Patch: https://github.com/kamailio/kamailio/commit/8f87e7c4c3ba925a20bd0ab69e1fc885...
---
diff --git a/src/modules/xhttp_rpc/xhttp_rpc.c b/src/modules/xhttp_rpc/xhttp_rpc.c index 7e50035..6e27409 100644 --- a/src/modules/xhttp_rpc/xhttp_rpc.c +++ b/src/modules/xhttp_rpc/xhttp_rpc.c @@ -562,7 +562,7 @@ static int rpc_struct_add(struct rpc_data_struct* rpc_s, char* fmt, ...) }
-static int rpc_struct_scan(void* s, char* fmt, ...) +static int rpc_struct_scan(struct rpc_data_struct* rpc_s, char* fmt, ...) { LM_ERR("Not implemented\n"); return -1; @@ -571,10 +571,34 @@ static int rpc_struct_scan(void* s, char* fmt, ...)
/** Create a new member from formatting string and add it to a structure. */ -static int rpc_struct_printf(void* s, char* member_name, char* fmt, ...) +static int rpc_struct_printf(struct rpc_data_struct* rpc_s, char* member_name, char* fmt, ...) { - LM_ERR("Not implemented\n"); - return -1; + va_list ap; + char buf[PRINT_VALUE_BUF_LEN]; + int len; + str _name,_body; + rpc_ctx_t *ctx = rpc_s->ctx; + + if (!ctx) { + LM_ERR("Invalid context\n"); + return -1; + } + + va_start(ap, fmt); + len=vsnprintf(buf, PRINT_VALUE_BUF_LEN, fmt, ap); + va_end(ap); + if ((len<0) || (len>PRINT_VALUE_BUF_LEN)){ + LM_ERR("buffer size exceeded [%d]\n", PRINT_VALUE_BUF_LEN); + return -1; + } + + _name.s = member_name; + _name.len = strlen(member_name); + _body.s = buf; + _body.len = len; + if (0!=xhttp_rpc_build_content(ctx, &_body, &_name)) return -1; + + return 0; }