Header parameter parsing error with [IPv6] address in Contact header

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tuesday, April 07, 2015 07:26:23 PM Anthony Messina wrote:
> I'm new to the mailing list, though I've been using PJSIP via CSipSimple on
> Android as well as Asterisk 12 & 13 for some time, so thank you for PJSIP!
> 
> As I've begun to integrate Kamailio, IPv6, and WebSocket into my existing
> setup, I think I have come across a header parameter parsing error.
> 
> In many cases WebSocket connections need to be treated as though they are
> NATed and Kamailio has good support for this in part by adding a Contact
> header alias parameter which looks something like the following:
> 
> Contact: <sip:wstest1 at example.com;gr=urn:uuid:2e54e8a2-66e4-433a-a024-
> b57f3665a44b;alias=[2001:db8::99]~43691~6>
> 
> Unfortunately, PJSIP (both in Asterisk 13.2.1 and CSipSimple nightly build)
> chokes when parsing the 'alias' parameter, giving the following error:
> 
> PJSIP syntax error exception when parsing 'Request Line' header on line 11
> col 105:
> 
> Where line 11 is the Contact header, and column 105 is the '4' immediately
> after "alias=[2001:db8::99]~" in the Contact header.
> 
> As such, the INVITE never receives any response and is re transmitted by the
> caller over and over.
> 
> Any assistance is appreciated.  Thank you in advance.  -A
> 
> 
> The full example SIP INVITE is as follows:
> 
> INVITE sip:testuser at example.com SIP/2.0
> Record-Route: <sip:10.0.0.1;r2=on;lr=on;ftag=t5r2736hf9;nat=yes>
> Record-Route: <sip:
> [2001:db8::98]:5061;transport=ws;r2=on;lr=on;ftag=t5r2736hf9;nat=yes>
> Via: SIP/2.0/UDP
> 10.0.0.1;branch=z9hG4bKa3e8.2bb6508fbc0cf8cc55c1eb6c0eca0b38.0
> Via: SIP/2.0/WSS
> 2e6orc23ptjv.invalid;rport=43691;received=2001:db8::99;branch=z9hG4bK450538
> Max-Forwards: 69
> To: <sip:testuser at example.com>
> From: "WS Test User 1" <sip:wstest1@xxxxxxxxxxx>;tag=t5r2736hf9
> Call-ID: uugmpjgjpoklrnf0um56
> CSeq: 7244 INVITE
> Contact: <sip:wstest1 at example.com;gr=urn:uuid:2e54e8a2-66e4-433a-a024-
> b57f3665a44b;alias=[2001:db8::99]~43691~6>
> Allow: ACK,CANCEL,BYE,OPTIONS,INFO,NOTIFY,INVITE
> Content-Type: application/sdp
> Supported: gruu,outbound
> User-Agent: SIP.js/0.6.4
> Content-Length: 2768
> 
> v=0
> o=- 867554869709517848 2 IN IP4 10.0.0.1
> s=-
> t=0 0
> a=msid-semantic: WMS livWfUwMWQJMemgnFyBQDf1VXUo9Q0AXwHnH
> m=audio 30158 RTP/SAVP 111 103 104 9 0 8 106 105 13 126
> c=IN IP4 10.0.0.1
> a=rtpmap:111 opus/48000/2
> a=fmtp:111 minptime=10; useinbandfec=1
> a=rtpmap:103 ISAC/16000
> a=rtpmap:104 ISAC/32000
> a=rtpmap:9 G722/8000
> a=rtpmap:0 PCMU/8000
> a=rtpmap:8 PCMA/8000
> a=rtpmap:106 CN/32000
> a=rtpmap:105 CN/16000
> a=rtpmap:13 CN/8000
> a=rtpmap:126 telephone-event/8000
> a=maxptime:60
> a=ssrc:1444733772 cname:CuBdEZ9bIWQc1sE+
> a=ssrc:1444733772 msid:livWfUwMWQJMemgnFyBQDf1VXUo9Q0AXwHnH
> ebd0066b-73b9-467c-b696-36e0fa7d72b7
> a=ssrc:1444733772 mslabel:livWfUwMWQJMemgnFyBQDf1VXUo9Q0AXwHnH
> a=ssrc:1444733772 label:ebd0066b-73b9-467c-b696-36e0fa7d72b7
> a=sendrecv
> a=rtcp:30159
> a=rtcp-mux
> a=crypto:1 AES_CM_128_HMAC_SHA1_80
> inline:/fmyETo1BwAlupltb64sy5Za6e37BW0p5jMmvqHU
> a=setup:actpass
> a=fingerprint:sha-1
> 76:27:60:1E:64:94:B4:6E:8A:64:72:2D:41:2C:B8:F3:FF:4C:1D:56
> a=ice-ufrag:U4XlaM4U
> a=ice-pwd:HqnTPTU5DY3j1yB4XVEL9rs1tn
> a=candidate:vVzo18e51E8EXCNy 1 UDP 2130706431 10.0.0.1 30158 typ host
> a=candidate:vVzo18e51E8EXCNy 2 UDP 2130706430 10.0.0.1 30159 typ host
> a=candidate:xCpWH2paVucFSQXn 1 UDP 2130706175 2001:db8::1 30158 typ host
> a=candidate:xCpWH2paVucFSQXn 2 UDP 2130706174 2001:db8::1 30159 typ host
> m=video 30196 RTP/SAVP 100 116 117 96
> c=IN IP4 10.0.0.1
> a=rtpmap:100 VP8/90000
> a=rtcp-fb:100 ccm fir
> a=rtcp-fb:100 nack
> a=rtcp-fb:100 nack pli
> a=rtcp-fb:100 goog-remb
> a=rtpmap:116 red/90000
> a=rtpmap:117 ulpfec/90000
> a=rtpmap:96 rtx/90000
> a=fmtp:96 apt=100
> a=ssrc-group:FID 616715905 3177427003
> a=ssrc:616715905 cname:CuBdEZ9bIWQc1sE+
> a=ssrc:616715905 msid:livWfUwMWQJMemgnFyBQDf1VXUo9Q0AXwHnH
> bb5df7ec-28a9-4e94-89a3-2ebb45a9f5bb
> a=ssrc:616715905 mslabel:livWfUwMWQJMemgnFyBQDf1VXUo9Q0AXwHnH
> a=ssrc:616715905 label:bb5df7ec-28a9-4e94-89a3-2ebb45a9f5bb
> a=ssrc:3177427003 cname:CuBdEZ9bIWQc1sE+
> a=ssrc:3177427003 msid:livWfUwMWQJMemgnFyBQDf1VXUo9Q0AXwHnH
> bb5df7ec-28a9-4e94-89a3-2ebb45a9f5bb
> a=ssrc:3177427003 mslabel:livWfUwMWQJMemgnFyBQDf1VXUo9Q0AXwHnH
> a=ssrc:3177427003 label:bb5df7ec-28a9-4e94-89a3-2ebb45a9f5bb
> a=sendrecv
> a=rtcp:30197
> a=rtcp-mux
> a=crypto:1 AES_CM_128_HMAC_SHA1_80
> inline:qQRmOwum0YFHgKKzt2dRX0uAQhSwlmxscI3P3JUI
> a=setup:actpass
> a=fingerprint:sha-1
> 76:27:60:1E:64:94:B4:6E:8A:64:72:2D:41:2C:B8:F3:FF:4C:1D:56
> a=ice-ufrag:ISaptX08
> a=ice-pwd:mxP343kHexU8SwtbCeRj4WyMNI
> a=candidate:vVzo18e51E8EXCNy 1 UDP 2130706431 10.0.0.1 30196 typ host
> a=candidate:vVzo18e51E8EXCNy 2 UDP 2130706430 10.0.0.1 30197 typ host
> a=candidate:xCpWH2paVucFSQXn 1 UDP 2130706175 2001:db8::1 30196 typ host
> a=candidate:xCpWH2paVucFSQXn 2 UDP 2130706174 2001:db8::1 30197 typ host

After playing around a bit, I can confirm that the attached patch "fixes" the 
issue, at least for me (on pjproject 2.3 and 2.4). However, I'm truly not sure 
that this is the proper way to fix the issue and would appreciate someone who 
knows the PJSIP internals taking a look.

Thanks again. -A

-- 
Anthony - https://messinet.com/ - https://messinet.com/~amessina/gallery
8F89 5E72 8DF0 BCF0 10BE 9967 92DC 35DC B001 4A4E
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pjproject_kamailio_contact_alias_fix.patch
Type: text/x-patch
Size: 735 bytes
Desc: not available
URL: <http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/attachments/20150516/88b44bd6/attachment.patch>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.pjsip.org/pipermail/pjsip_lists.pjsip.org/attachments/20150516/88b44bd6/attachment.asc>


[Index of Archives]     [Asterisk Users]     [Asterisk App Development]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [Linux API]
  Powered by Linux