Module: sip-router
Branch: master
Commit: 1b7e7f6dec7e4a351db19d3377850828e263784b
URL:
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=1b7e7f6…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com>
Committer: Daniel-Constantin Mierla <miconda(a)gmail.com>
Date: Thu Aug 14 18:11:47 2014 +0200
jsonrpc-s: completed the rpc printf() api function
---
modules/jsonrpc-s/jsonrpc-s_mod.c | 25 +++++++++++++++++--------
1 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/modules/jsonrpc-s/jsonrpc-s_mod.c b/modules/jsonrpc-s/jsonrpc-s_mod.c
index ab48c93..5928e90 100644
--- a/modules/jsonrpc-s/jsonrpc-s_mod.c
+++ b/modules/jsonrpc-s/jsonrpc-s_mod.c
@@ -165,8 +165,6 @@ static void jsonrpc_fault(jsonrpc_ctx_t* ctx, int code, char* fmt,
...)
*/
static int jsonrpc_init_reply(jsonrpc_ctx_t *ctx)
{
- srjson_t *nj = NULL;
-
ctx->http_code = 200;
ctx->http_text = JSONRPC_REASON_OK;
ctx->jrpl = srjson_NewDoc(NULL);
@@ -401,9 +399,6 @@ static int jsonrpc_scan(jsonrpc_ctx_t* ctx, char* fmt, ...)
char **char_ptr;
double *double_ptr;
str *str_ptr;
-
- str arg;
-
int mandatory_param = 1;
int modifiers = 0;
int auto_convert = 0;
@@ -492,6 +487,23 @@ static int jsonrpc_printf(jsonrpc_ctx_t* ctx, char* fmt, ...)
/* if that worked, return the string. */
if (n > -1 && n < buf_size) {
nj = srjson_CreateString(ctx->jrpl, buf);
+ if(nj==NULL) {
+ LM_ERR("failed to create the value node\n");
+ return -1;
+ }
+ if(ctx->flags & RET_ARRAY) {
+ if (ctx->rpl_node==NULL) {
+ ctx->rpl_node = srjson_CreateArray(ctx->jrpl);
+ if(ctx->rpl_node == 0) {
+ LM_ERR("failed to create the root array node\n");
+ return -1;
+ }
+ }
+ srjson_AddItemToArray(ctx->jrpl, ctx->rpl_node, nj);
+ } else {
+ if (ctx->rpl_node) srjson_Delete(ctx->jrpl, ctx->rpl_node);
+ ctx->rpl_node = nj;
+ }
if(buf && buf!=tbuf) jsonrpc_free(buf);
return 0;
}
@@ -679,8 +691,6 @@ static void jsonrpc_clean_context(jsonrpc_ctx_t* ctx)
static int mod_init(void)
{
- int i;
-
/* bind the XHTTP API */
if (xhttp_load_api(&xhttp_api) < 0) {
LM_ERR("cannot bind to XHTTP API\n");
@@ -722,7 +732,6 @@ static int jsonrpc_dispatch(sip_msg_t* msg, char* s1, char* s2)
jsonrpc_ctx_t* ctx;
str arg = {NULL, 0};
int ret = 0;
- int i;
srjson_t *nj = NULL;
str val;