Traced this, got it to work for 'pl.stats' ...
[root@allegro-4 pipelimit]# !curl curl --digest --user xxx:xxx http://10.150.20.6:5060/csrp_rpc/ --data '{"jsonrpc": "2.0", "method": "pl.stats", "id": "0xd"}'; echo { "jsonrpc": "2.0", "result": ["PIPE: id=bg350_ingress load=0 counter=0", "PIPE: id=bg208_ingress load=0 counter=0"], "id": "0xd" }
The problem is that the RPC function exports at the bottom of pipelimit.c are missing the RET_ARRAY flag:
--- static rpc_export_t rpc_methods[] = { {"pl.stats", rpc_pl_stats, rpc_pl_stats_doc, 0}, {"pl.get_pipes", rpc_pl_get_pipes, rpc_pl_get_pipes_doc, 0}, {"pl.set_pipe", rpc_pl_set_pipe, rpc_pl_set_pipe_doc, 0}, {"pl.get_pid", rpc_pl_get_pid, rpc_pl_get_pid_doc, 0}, {"pl.set_pid", rpc_pl_set_pid, rpc_pl_set_pid_doc, 0}, {"pl.push_load", rpc_pl_push_load, rpc_pl_push_load_doc, 0}, {0, 0, 0, 0} }; ---
Adding it to functions that return multiple values, e.g.
{"pl.stats", rpc_pl_stats, rpc_pl_stats_doc, RET_ARRAY}
should sort it. I'll submit a pull request.
-- Alex