[SR-Users] JSON error - control character 0xd

David Dean just_bytesize at yahoo.co.uk
Tue Apr 23 01:01:11 CEST 2019


 Digging into this a bit deeper, I now understand the exact problem.
The issue is the difference in newlines between sdp_get output and the JSON format.
sdp_get returns the SDP with unix newline characters i.e. \r\n.

However JSON won't accept unix newlines and requires a single line output with literal \r\n instead (i.e. escaped).
So now I'm having to write the SDP into an external file using exec_msg, manipulate it with awk -v RS='\r?\n' -v ORS='\\r\\n' '1' and then bring it back into Kamailio. Not nice and also not yet working correctly yet.
If there was a function within the JANSSON module to take a multi-line input (like the SDP) and convert it into a single line with literal \r\n characters ready for posting in a JSON message then that would make life much easier.






    On Sunday, 21 April 2019, 19:15:22 BST, David Dean <just_bytesize at yahoo.co.uk> wrote:  
 
 I'm trying to send an SDP from a SIP client to Janus using JSON over HTTP.
The problem is that Janus is erroring on the SDP content with the following error:

JANUS HTTP: Get SDP for echo plugin: {#012   "janus": "error",#012   "error": {#012      "code": 454,#012      "reason": "JSON error: on line 9: control character 0xd near '\"v=0'"#012   }#012} Result code 200

I tried using {s.escape.common} to escape any quotations, commas etc but it doesn't appear to replace the control characters with newlines.
Any suggestions on how best to remove these control characters so that Janus will accept the SDP over JSON?
Here is the relevant section of kamailio.cfg:

# HTTP: Request SDP for echo test plugin                sdp_get("$avp(sdp)");
                $var(res) = http_connect("janus", "/janus/$var(JANUS-ID)/$var(ECHO-ID)", "application/json", "{        \"janus\" : \"message\",        \"transaction\" : \"testtesttest99\",        \"body\" : {                \"audio\" : true        },        \"jsep\" : {                \"type\" : \"offer\",                \"sdp\" : \"$(avp(sdp){s.escape.common})\"        }}", "$avp(janus-pluginsession)");                xlog("L_INFO", "JANUS HTTP: Get SDP for echo plugin: $avp(janus-pluginsession) Result code $var(res)\n");


  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20190422/19689a7c/attachment.html>


More information about the sr-users mailing list