Module: sip-router
Branch: master
Commit: 1b7e7f6dec7e4a351db19d3377850828e263784b
URL:    
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=1b7e7f6dec7e4a351db19d3377850828e263784b

Author: Daniel-Constantin Mierla <[email protected]>
Committer: Daniel-Constantin Mierla <[email protected]>
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;
 


_______________________________________________
sr-dev mailing list
[email protected]
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to