Module: kamailio Branch: master Commit: 053ddb5ba56adc8f241052161da66a8ece12e2f3 URL: https://github.com/kamailio/kamailio/commit/053ddb5ba56adc8f241052161da66a8ece12e2f3
Author: Daniel-Constantin Mierla <mico...@gmail.com> Committer: Daniel-Constantin Mierla <mico...@gmail.com> Date: 2017-01-06T15:32:04+01:00 clt: treat rpc array as a structure, otherwise kamcmd fails - no proper array support for binrpc breaks the ctl-kamcmd. The array is displayed as a structure, like it was done in the past - for proper json output, use kamctl or kamcli --- Modified: src/modules/ctl/binrpc_run.c --- Diff: https://github.com/kamailio/kamailio/commit/053ddb5ba56adc8f241052161da66a8ece12e2f3.diff Patch: https://github.com/kamailio/kamailio/commit/053ddb5ba56adc8f241052161da66a8ece12e2f3.patch --- diff --git a/src/modules/ctl/binrpc_run.c b/src/modules/ctl/binrpc_run.c index 0f4f1a5..4adad72 100644 --- a/src/modules/ctl/binrpc_run.c +++ b/src/modules/ctl/binrpc_run.c @@ -974,18 +974,12 @@ static int rpc_add(struct binrpc_ctx* ctx, char* fmt, ...) break; case '{': case '[': - if(*fmt == '{') - err=binrpc_start_struct(&ctx->out.pkt); - else - err=binrpc_start_array(&ctx->out.pkt); + err=binrpc_start_struct(&ctx->out.pkt); if (err<0) goto error_add; rs=new_rpc_struct(); if (rs==0) goto error_mem; rs->offset=binrpc_pkt_len(&ctx->out.pkt); - if(*fmt == '{') - err=binrpc_end_struct(&ctx->out.pkt); - else - err=binrpc_end_array(&ctx->out.pkt); + err=binrpc_end_struct(&ctx->out.pkt); if (err<0) goto error_add; clist_append(&ctx->out.structs, rs, next, prev); *(va_arg(ap, void**))=rs; @@ -1086,10 +1080,7 @@ static int rpc_struct_add(struct rpc_struct_l* s, char* fmt, ...) break; case '{': case '[': - if(*fmt == '{') - avp.type=BINRPC_T_STRUCT; - else - avp.type=BINRPC_T_ARRAY; + avp.type=BINRPC_T_STRUCT; err=binrpc_addavp(&s->pkt, &avp); if (err<0){ LM_ERR("failed to add attribute-value (%c)\n", *fmt); @@ -1101,10 +1092,7 @@ static int rpc_struct_add(struct rpc_struct_l* s, char* fmt, ...) goto error_mem; } rs->offset=binrpc_pkt_len(&s->pkt); - if(*fmt == '{') - err=binrpc_end_struct(&s->pkt); - else - err=binrpc_end_array(&s->pkt); + err=binrpc_end_struct(&s->pkt); if (err<0) { LM_ERR("failed to end struct (%c)\n", *fmt); goto error_add; @@ -1168,18 +1156,12 @@ static int rpc_array_add(struct rpc_struct_l* s, char* fmt, ...) break; case '{': case '[': - if(*fmt == '{') - err=binrpc_start_struct(&s->pkt); - else - err=binrpc_start_array(&s->pkt); + err=binrpc_start_struct(&s->pkt); if (err<0) goto error_add; rs=new_rpc_struct(); if (rs==0) goto error_mem; rs->offset=binrpc_pkt_len(&s->pkt); - if(*fmt == '{') - err=binrpc_end_struct(&s->pkt); - else - err=binrpc_end_array(&s->pkt); + err=binrpc_end_struct(&s->pkt); if (err<0) goto error_add; clist_append(&s->substructs, rs, next, prev); *(va_arg(ap, void**))=rs; _______________________________________________ sr-dev mailing list sr-dev@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev