Experimenting janssonrpc-c, I noticed that I can't get anythin in the result variable, if no "route" option is specified. 1/ With "route" option, everything is OK: janssonrpc_request("local", "bar.PIC1", '{"cli": "$avp(cli)","en": "$avp(cld)"}', "route=RPC_Init_Resp,retry=1"); route[RPC_Init_Resp] { xlog("JANSSON result: $var(result)\n");
The "xlog" returns the json formatted results as expected: JANSSON result: {"result":{"NetScenario":"PreCall","cli":"123456789","en":"9876543210Destination":"sip:xxx@xx.x.xx.xxx:xxxx","NextRPC":"bar.PIC2"}}
2/ The exact same request, without the route option does not return anything: janssonrpc_request("local", "bar.PIC1", '{"cli": "$avp(cli)","en": "$avp(cld)"}'); xlog("JANSSON result: $var(result)\n");
The "xlog" returns 0 this time: JANSSON result: 0
A tshark trace indicates the same response is returned by the jsonrpc server, excluding a potential issue on this side.
I am available for futher information Best regards,
Laurent.
--- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/issues/256
Closed #256.
--- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/issues/256#event-360842955
The function is asynchronous, meaning that while waiting for response, other sip packets are handled, current one being suspended. Also, the response comes in other process. If you want to handle the rpc response, then you have to provide the name of the route block where to resume the processing of the suspended request.
In the docs of the function is written:
``` If no route is specified, then any errors are logged and successes are ignored. ```
Therefore it is no bug, but how the function was designed to work.
--- Reply to this email directly or view it on GitHub: https://github.com/kamailio/kamailio/issues/256#issuecomment-123193137