Summary: | ASTERISK-13112: SDP replies incorrect - 'a=inactive' - replied to with 'a=sendrecv' | ||
Reporter: | TOC Jason (toc) | Labels: | |
Date Opened: | 2008-11-24 05:15:43.000-0600 | Date Closed: | 2009-06-15 16:29:28 |
Priority: | Major | Regression? | No |
Status: | Closed/Complete | Components: | Channels/chan_sip/Interoperability |
Versions: | Frequency of Occurrence | ||
Related Issues: | |||
Environment: | Attachments: | ( 0) bug13958-trunk164941-3.diff | |
Description: | When asterisk is sent a packet from Microsoft OCS Mediation Server, where the call is being placed on hold, Asterisk sends an incorrect response. Mediation server is 192.168.1.208 Asterisk is 192.168.1.250 (on 5061). OpenSIPS is intercepting to resolve the bug on 192.168.1.250 (on 5060) The packet sent from OCS is below (intercepted using OpenSIPS): [ Method INVITE from 192.168.1.208:1276 (2) ] INVITE sip:01234567@192.168.1.250:5061 SIP/2.0 FROM: <sip:First.Last@domain.com>;epid=A4325290A1;tag=f7768ee4ad TO: <sip:01234567@192.168.1.250;user=phone>;tag=as79279f7b CSEQ: 69 INVITE CALL-ID: 1ae1e5ef-f96f-482c-9c44-da92c9094ecc MAX-FORWARDS: 70 VIA: SIP/2.0/TCP 192.168.1.208:1276;branch=z9hG4bK1d297960 CONTACT: <sip:domain.com.au:5060;transport=Tcp;maddr=192.168.1.208;ms-opaque=2cea147ecbefbb7f> CONTENT-LENGTH: 268 SUPPORTED: 100rel USER-AGENT: RTCC/3.0.0.0 MediationServer CONTENT-TYPE: application/sdp; charset=utf-8 v=0 o=- 0 0 IN IP4 192.168.1.208 s=session c=IN IP4 192.168.1.208 b=CT:1000 t=0 0 m=audio 60806 RTP/AVP 0 101 c=IN IP4 192.168.1.208 a=rtcp:60807 a=inactive a=label:Audio a=rtpmap:0 PCMU/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16 a=ptime:20 [ End of Request (2) ] Response from Asterisk: [ Reply 200 (OK) from 192.168.1.250:5061 concerning INVITE ] SIP/2.0 200 OK Via: SIP/2.0/UDP 192.168.1.250;branch=z9hG4bK3795.6ca29175.0;i=2;received=192.168.1.250 Via: SIP/2.0/TCP 192.168.1.208:1276;branch=z9hG4bK1d297960 From: <sip:First.Last@domain.com.au>;epid=A4325290A1;tag=f7768ee4ad To: <sip:01234567@192.168.1.250;user=phone>;tag=as79279f7b Call-ID: 1ae1e5ef-f96f-482c-9c44-da92c9094ecc CSeq: 69 INVITE User-Agent: Asterisk Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY Supported: replaces, timer Contact: <sip:01234567@192.168.1.250:5061> Content-Type: application/sdp Content-Length: 261 v=0 o=root 295744575 295744576 IN IP4 192.168.1.250 s=Asterisk PBX 1.6.0 c=IN IP4 192.168.1.250 t=0 0 m=audio 19848 RTP/AVP 0 101 a=rtpmap:0 PCMU/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16 a=silenceSupp:off - - - - a=ptime:20 a=sendrecv [ End of Reply ] The asterisk packet contains an incorrect a=sendrecv, it should be a=inactive as OCS has requested the call to be placed on hold. The hold works when modifying the packet from a=sendrecv to a=inactive using OpenSIPS. | ||
Comments: | By: Leif Madsen (lmadsen) 2008-11-24 09:14:32.000-0600 Assigned to mnicholson for a quick review to determine if he can take this issue on. Sorry for using the wrong method of assigning at first. Switching this back to new for now, then we'll go to acknowledged once mnicholson determines what to do with this issue. Please reassign if necessary. Thanks! By: Matthew Nicholson (mnicholson) 2008-12-09 16:21:13.000-0600 Try the patch I just posted and let me know if it fixes the issue please. By: Matthew Nicholson (mnicholson) 2008-12-09 16:45:13.000-0600 Actually that patch should not really change anything. Looking at the code, the scenario you are describing should work properly. Can you test with history recording enabled and see if there is a hold event recorded in the history? From the CLI run: sip set history on To enable history and then: sip show history To view the history. By: TOC Jason (toc) 2008-12-10 02:14:50.000-0600 Ok - reverted to the asterisk + OCS mediation server (no patch applied): More feedback pending the patch being applied. * SIP Call 1. Rx INVITE / 232 INVITE / sip:<external number>@192.168.1.250;user=phone 2. NewChan Channel SIP/network.domain.com.au-08bc0b48 - fr 3. TxResp SIP/2.0 / 232 INVITE - 100 Trying 4. TxResp SIP/2.0 / 232 INVITE - 180 Ringing 5. TxRespRel SIP/2.0 / 232 INVITE - 200 OK 6. Rx ACK / 232 ACK / sip:<external number>@192.168.1.250:5060;transport=TCP 7. Rx INVITE / 233 INVITE / sip:<external number>@192.168.1.250:5060;transpo 8. ReInv Re-invite received 9. TxResp SIP/2.0 / 233 INVITE - 100 Trying 10. TxRespRel SIP/2.0 / 233 INVITE - 200 OK 11. Rx ACK / 233 ACK / sip:<external number>@192.168.1.250:5060;transport=TCP # pressed hold test*CLI> * SIP Call 1. Rx INVITE / 232 INVITE / sip:<external number>@192.168.1.250;user=phone 2. NewChan Channel SIP/network.domain.com.au-08bc0b48 - fr 3. TxResp SIP/2.0 / 232 INVITE - 100 Trying 4. TxResp SIP/2.0 / 232 INVITE - 180 Ringing 5. TxRespRel SIP/2.0 / 232 INVITE - 200 OK 6. Rx ACK / 232 ACK / sip:<external number>@192.168.1.250:5060;transport=TCP 7. Rx INVITE / 233 INVITE / sip:<external number>@192.168.1.250:5060;transpo 8. ReInv Re-invite received 9. TxResp SIP/2.0 / 233 INVITE - 100 Trying 10. TxRespRel SIP/2.0 / 233 INVITE - 200 OK 11. Rx ACK / 233 ACK / sip:<external number>@192.168.1.250:5060;transport=TCP 12. Rx INVITE / 234 INVITE / sip:<external number>@192.168.1.250:5060;transpo 13. ReInv Re-invite received 14. TxResp SIP/2.0 / 234 INVITE - 100 Trying 15. TxRespRel SIP/2.0 / 234 INVITE - 200 OK 16. Rx ACK / 234 ACK / sip:<external number>@192.168.1.250:5060;transport=TCP And here's another, doing exact the same, with SIP debug (note a=inactive from OCS, replied to with a=sendrecv by Asterisk): <--- SIP read from TCP://192.168.1.208:1335 ---> INVITE sip:<external number>@192.168.1.250:5060;transport=TCP SIP/2.0 FROM: <sip:First.Last@network.domain.com.au>;epid=A4325290A1;tag=16f16e814 TO: <sip:<external number>@192.168.1.250;user=phone>;tag=as1d515069 CSEQ: 236 INVITE CALL-ID: 7ca84582-7c97-4706-a3da-70068a647fd3 MAX-FORWARDS: 70 VIA: SIP/2.0/TCP 192.168.1.208:1335;branch=z9hG4bKd2f9eb80 CONTACT: <sip:Mediation.network.domain.com.au:5060;transport=Tcp;maddr=192.168.1.208;ms-opaque=2cea147ecbefbb7f> CONTENT-LENGTH: 268 SUPPORTED: 100rel USER-AGENT: RTCC/3.0.0.0 MediationServer CONTENT-TYPE: application/sdp; charset=utf-8 v=0 o=- 0 0 IN IP4 192.168.1.208 s=session c=IN IP4 192.168.1.208 b=CT:1000 t=0 0 m=audio 60472 RTP/AVP 0 101 c=IN IP4 192.168.1.208 a=rtcp:60473 a=inactive a=label:Audio a=rtpmap:0 PCMU/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16 a=ptime:20 0 a=rtpmap:8 PCMA/8000 a=ptime:20 <-------------> --- (12 headers 18 lines) --- Sending to 192.168.1.208 : 1335 (no NAT) test*CLI> <--- Transmitting (no NAT) to 192.168.1.208:1335 ---> SIP/2.0 100 Trying Via: SIP/2.0/TCP 192.168.1.208:1335;branch=z9hG4bKd2f9eb80;received=192.168.1.208 From: <sip:First.Last@network.domain.com.au>;epid=A4325290A1;tag=16f16e814 To: <sip:<external number>@192.168.1.250;user=phone>;tag=as1d515069 Call-ID: 7ca84582-7c97-4706-a3da-70068a647fd3 CSeq: 236 INVITE User-Agent: Asterisk Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY Supported: replaces, timer Contact: <sip:<external number>@192.168.1.250:5060;transport=TCP> Content-Length: 0 <------------> Audio is at 192.168.1.250 port 12568 Adding codec 0x4 (ulaw) to SDP Adding non-codec 0x1 (telephone-event) to SDP test*CLI> <--- Reliably Transmitting (no NAT) to 192.168.1.208:1335 ---> SIP/2.0 200 OK Via: SIP/2.0/TCP 192.168.1.208:1335;branch=z9hG4bKd2f9eb80;received=192.168.1.208 From: <sip:First.last@network.domain.com.au>;epid=A4325290A1;tag=16f16e814 To: <sip:<external number>@192.168.1.250;user=phone>;tag=as1d515069 Call-ID: 7ca84582-7c97-4706-a3da-70068a647fd3 CSeq: 236 INVITE User-Agent: Asterisk Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY Supported: replaces, timer Contact: <sip:<external number>@192.168.1.250:5060;transport=TCP> Content-Type: application/sdp Content-Length: 259 v=0 o=root 83368207 83368207 IN IP4 192.168.1.250 s=Asterisk PBX 1.6.0 c=IN IP4 192.168.1.250 t=0 0 m=audio 12568 RTP/AVP 0 101 a=rtpmap:0 PCMU/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16 a=silenceSupp:off - - - - a=ptime:20 a=sendrecv By: TOC Jason (toc) 2008-12-10 02:22:02.000-0600 Patch applied and installed (did not work)- asterisk 1.6.0: * SIP Call 1. Rx INVITE / 234 INVITE / sip:<external number>@192.168.1.250;user=phone 2. NewChan Channel SIP/network.domain.com.au-0950ae10 - fr 3. TxResp SIP/2.0 / 234 INVITE - 100 Trying 4. TxResp SIP/2.0 / 234 INVITE - 180 Ringing 5. TxRespRel SIP/2.0 / 234 INVITE - 200 OK 6. Rx ACK / 234 ACK / sip:<external number>@192.168.1.250:5060;transport=TCP 7. Rx INVITE / 235 INVITE / sip:<external number>@192.168.1.250:5060;transpo 8. ReInv Re-invite received 9. TxResp SIP/2.0 / 235 INVITE - 100 Trying 10. TxRespRel SIP/2.0 / 235 INVITE - 200 OK 11. Rx ACK / 235 ACK / sip:<external number>@192.168.1.250:5060;transport=TCP 12. Rx INVITE / 236 INVITE / sip:<external number>@192.168.1.250:5060;transpo 13. ReInv Re-invite received 14. TxResp SIP/2.0 / 236 INVITE - 100 Trying 15. TxRespRel SIP/2.0 / 236 INVITE - 200 OK 16. Rx ACK / 236 ACK / sip:<external number>@192.168.1.250:5060;transport=TCP #pressed hold * SIP Call 1. Rx INVITE / 234 INVITE / sip:<external number>@192.168.1.250;user=phone 2. NewChan Channel SIP/network.domain.com.au-0950ae10 - fr 3. TxResp SIP/2.0 / 234 INVITE - 100 Trying 4. TxResp SIP/2.0 / 234 INVITE - 180 Ringing 5. TxRespRel SIP/2.0 / 234 INVITE - 200 OK 6. Rx ACK / 234 ACK / sip:<external number>@192.168.1.250:5060;transport=TCP 7. Rx INVITE / 235 INVITE / sip:<external number>@192.168.1.250:5060;transpo 8. ReInv Re-invite received 9. TxResp SIP/2.0 / 235 INVITE - 100 Trying 10. TxRespRel SIP/2.0 / 235 INVITE - 200 OK 11. Rx ACK / 235 ACK / sip:<external number>@192.168.1.250:5060;transport=TCP 12. Rx INVITE / 236 INVITE / sip:<external number>@192.168.1.250:5060;transpo 13. ReInv Re-invite received 14. TxResp SIP/2.0 / 236 INVITE - 100 Trying 15. TxRespRel SIP/2.0 / 236 INVITE - 200 OK 16. Rx ACK / 236 ACK / sip:<external number>@192.168.1.250:5060;transport=TCP 17. Rx INVITE / 237 INVITE / sip:<external number>@192.168.1.250:5060;transpo 18. ReInv Re-invite received 19. TxResp SIP/2.0 / 237 INVITE - 100 Trying 20. TxRespRel SIP/2.0 / 237 INVITE - 200 OK 21. Rx ACK / 237 ACK / sip:<external number>@192.168.1.250:5060;transport=TCP Another call with SIP debug (The packets provided are when hold is pressed) - note the same 'sendrecv' SDP response: <--- SIP read from TCP://192.168.1.208:1384 ---> INVITE sip:<external number>@192.168.1.250:5060;transport=TCP SIP/2.0 FROM: <sip:First.Last@network.domain.com.au>;epid=A4325290A1;tag=efb557905e TO: <sip:<external number>@192.168.1.250;user=phone>;tag=as52ca7ad3 CSEQ: 236 INVITE CALL-ID: f97f8e7a-f3e6-421b-a01d-3eb1ab3da5ac MAX-FORWARDS: 70 VIA: SIP/2.0/TCP 192.168.1.208:1384;branch=z9hG4bK4ee02c2e CONTACT: <sip:Mediation.network.domain.com.au:5060;transport=Tcp;maddr=192.168.1.208;ms-opaque=2cea147ecbefbb7f> CONTENT-LENGTH: 268 SUPPORTED: 100rel USER-AGENT: RTCC/3.0.0.0 MediationServer CONTENT-TYPE: application/sdp; charset=utf-8 v=0 o=- 0 0 IN IP4 192.168.1.208 s=session c=IN IP4 192.168.1.208 b=CT:1000 t=0 0 m=audio 60370 RTP/AVP 0 101 c=IN IP4 192.168.1.208 a=rtcp:60371 a=inactive a=label:Audio a=rtpmap:0 PCMU/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16 a=ptime:20 0 a=rtpmap:8 PCMA/8000 a=ptime:20 <-------------> --- (12 headers 18 lines) --- Sending to 192.168.1.208 : 1384 (no NAT) <--- Transmitting (no NAT) to 192.168.1.208:1384 ---> SIP/2.0 100 Trying Via: SIP/2.0/TCP 192.168.1.208:1384;branch=z9hG4bK4ee02c2e;received=192.168.1.208 From: <sip:First.Last@network.domain.com.au>;epid=A4325290A1;tag=efb557905e To: <sip:<external number>@192.168.1.250;user=phone>;tag=as52ca7ad3 Call-ID: f97f8e7a-f3e6-421b-a01d-3eb1ab3da5ac CSeq: 236 INVITE User-Agent: Asterisk Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY Supported: replaces, timer Contact: <sip:<external number>@192.168.1.250:5060;transport=TCP> Content-Length: 0 <------------> Audio is at 192.168.1.250 port 19698 Adding codec 0x4 (ulaw) to SDP Adding non-codec 0x1 (telephone-event) to SDP <--- Reliably Transmitting (no NAT) to 192.168.1.208:1384 ---> SIP/2.0 200 OK Via: SIP/2.0/TCP 192.168.1.208:1384;branch=z9hG4bK4ee02c2e;received=192.168.1.208 From: <sip:First.Last@network.domain.com.au>;epid=A4325290A1;tag=efb557905e To: <sip:<external number>@192.168.1.250;user=phone>;tag=as52ca7ad3 Call-ID: f97f8e7a-f3e6-421b-a01d-3eb1ab3da5ac CSeq: 236 INVITE User-Agent: Asterisk Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY Supported: replaces, timer Contact: <sip:<external number>@192.168.1.250:5060;transport=TCP> Content-Type: application/sdp Content-Length: 259 v=0 o=root 95282310 95282310 IN IP4 192.168.1.250 s=Asterisk PBX 1.6.0 c=IN IP4 192.168.1.250 t=0 0 m=audio 19698 RTP/AVP 0 101 a=rtpmap:0 PCMU/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-16 a=silenceSupp:off - - - - a=ptime:20 a=sendrecv By: Matthew Nicholson (mnicholson) 2008-12-10 16:19:10.000-0600 Can you attach sip debug (using 'sip debug on' from the asterisk CLI) of the entire transaction (start of call, hold attempt (and failure)). Please use the file upload feature. By: Matthew Nicholson (mnicholson) 2008-12-10 16:57:06.000-0600 Also include the DEBUG log from at least level 2 please. By: Matthew Nicholson (mnicholson) 2008-12-10 17:33:23.000-0600 Ok. After looking at this a little further, it appears asterisk is not honoring the new SDP data because the the SDP session version number (field 'o' is not incremented). If this is the case you should see this message in the debug log: SDP version number same as previous SDP To work around this, we could add some non standard behavior to asterisk so that it ignores the session version and always treats the SDP info as new. You should also be able to work around this by increasing the SDP version number each time a packet from your OCS server goes through your proxy. See http://tools.ietf.org/html/rfc4566#section-5.2 for info on the format of that 'o=...' line. By: TOC Jason (toc) 2008-12-10 17:38:47.000-0600 Can we have this as an option 'ignoresdpversion' defined at the SIP peer level? I'll test your theory after reconfiguring opensips later tonight to rewrite the o line *currently 10am here. I should have mentioned - I would prefer asterisk to be in place of opensips - opensips was only added to work around the bug. By: Matthew Nicholson (mnicholson) 2008-12-10 17:42:30.000-0600 Yes, I would implement it as an option like that, probably to be supported globally and at the peer level. By: TOC Jason (toc) 2008-12-11 22:52:10.000-0600 I have managed to resolve this issue by breaking standards. In chan_sip.c, modify the 'else' block to always respond "TRUE" to session_modify, and remove 'exit(0)' line at the end of the if block. Calls can be placed on hold successfully. Of course, this behaviour breaks standards, which is really just copying what Microsoft did in the first place (broke standards). if (p->sessionversion_remote < 0 || p->sessionversion_remote != rua_version) { p->sessionversion_remote = rua_version; p->session_modify = TRUE; } else if (p->sessionversion_remote == rua_version) { p->session_modify = TRUE; ast_debug(2, "SDP version number same as previous SDP\n"); } By: TOC Jason (toc) 2008-12-12 08:39:58.000-0600 I'll admit defeat here - I won't be much help in fixing the issue in the source, but, I think the below is a little better than the previous lines I posted. It should specifically refer to packets which have 0 as the version specified in SDP. if (p->sessionversion_remote < 0 || p->sessionversion_remote != rua_version || rua_version == 0) { p->sessionversion_remote = rua_version; p->session_modify = TRUE; } else if (p->sessionversion_remote == rua_version) { p->session_modify = FALSE; ast_debug(2, "SDP version number same as previous SDP\n"); return 0; } By: Matthew Nicholson (mnicholson) 2008-12-12 15:47:48.000-0600 I have changed the severity to feature, as addressing this issue amounts to a feature request. By: Matthew Nicholson (mnicholson) 2008-12-16 18:19:16.000-0600 Please test the patch I just uploaded. The patch implements the 'ignoresdpversion' flag. By: TOC Jason (toc) 2008-12-17 05:42:39.000-0600 Patch works, sort of what I was trying to put together. Thanks heaps! The only 'notable' issue is the length of the text in the CLI output - ie: Ignore SDP session version: No This causes the output to be too long to fit in with the other settings when the peer or settings are listed, and may cause issues with other users use. Perhaps a shortened: Ignore SDP Vers. is better to ensure the CLI output isn't pushed over. In saying this, I note other variables have been abbreviated. By: Matthew Nicholson (mnicholson) 2008-12-17 10:36:09.000-0600 Glad to hear the patch works. I was not sure exactly what to do with the 'Ignore SDP session version:' line, but I probably will need to abbreviate it. I am going to post this patch on reviewboard for review before committing it. By: Digium Subversion (svnbot) 2008-12-17 12:49:09.000-0600 Repository: asterisk Revision: 165180 U trunk/CHANGES U trunk/channels/chan_sip.c U trunk/configs/sip.conf.sample ------------------------------------------------------------------------ r165180 | mnicholson | 2008-12-17 12:49:08 -0600 (Wed, 17 Dec 2008) | 14 lines This patch adds a new 'ignoresdpversion' option to sip.conf. When this is enabled (either globally or for a specific peer), chan_sip will treat any SDP data it receives as new data and update the media stream accordingly. By default, Asterisk will only modify the media stream if the SDP session version received is different from the current SDP session version. This option is required to interoperate with devices that have non-standard SDP session version implementations (observed by toc on the bug tracker with Microsoft OCS which always uses 0 as the session version). http://reviewboard.digium.com/r/94 (closes issue ASTERISK-13112) Reported by: toc Tested by: toc ------------------------------------------------------------------------ http://svn.digium.com/view/asterisk?view=rev&revision=165180 By: Digium Subversion (svnbot) 2008-12-17 12:55:11.000-0600 Repository: asterisk Revision: 165180 U trunk/CHANGES U trunk/channels/chan_sip.c U trunk/configs/sip.conf.sample ------------------------------------------------------------------------ r165180 | mnicholson | 2008-12-17 12:49:12 -0600 (Wed, 17 Dec 2008) | 14 lines This patch adds a new 'ignoresdpversion' option to sip.conf. When this is enabled (either globally or for a specific peer), chan_sip will treat any SDP data it receives as new data and update the media stream accordingly. By default, Asterisk will only modify the media stream if the SDP session version received is different from the current SDP session version. This option is required to interoperate with devices that have non-standard SDP session version implementations (observed by toc on the bug tracker with Microsoft OCS which always uses 0 as the session version). http://reviewboard.digium.com/r/94/ (closes issue ASTERISK-13112) Reported by: toc Tested by: toc ------------------------------------------------------------------------ http://svn.digium.com/view/asterisk?view=rev&revision=165180 By: Digium Subversion (svnbot) 2009-06-15 16:20:42 Repository: asterisk Revision: 200707 _U branches/1.6.1/ U branches/1.6.1/channels/chan_sip.c U branches/1.6.1/configs/sip.conf.sample ------------------------------------------------------------------------ r200707 | kpfleming | 2009-06-15 16:20:41 -0500 (Mon, 15 Jun 2009) | 35 lines Merged revisions 165180,200689 via svnmerge from https://origsvn.digium.com/svn/asterisk/trunk ........ r165180 | mnicholson | 2008-12-17 12:49:12 -0600 (Wed, 17 Dec 2008) | 14 lines This patch adds a new 'ignoresdpversion' option to sip.conf. When this is enabled (either globally or for a specific peer), chan_sip will treat any SDP data it receives as new data and update the media stream accordingly. By default, Asterisk will only modify the media stream if the SDP session version received is different from the current SDP session version. This option is required to interoperate with devices that have non-standard SDP session version implementations (observed by toc on the bug tracker with Microsoft OCS which always uses 0 as the session version). http://reviewboard.digium.com/r/94/ (closes issue ASTERISK-13112) Reported by: toc Tested by: toc ........ r200689 | kpfleming | 2009-06-15 15:42:38 -0500 (Mon, 15 Jun 2009) | 12 lines Accept T.38 re-INVITE responses with invalid SDP versions. This commit changes the 'incoming SDP version' check logic a bit more; when 'ignoresdpversion' is *not* set for a peer, if we initiate a re-INVITE to switch to T.38, we'll always accept the peer's SDP response, even if they don't properly increment the SDP version number as they should. If this situation occurs, a warning message will be generated suggesting that the peer's configuration be changed to include the 'ignoresdpversion' configuration option (although ideally they'd fix their SIP implementation to be RFC compliant). AST-221 ........ ------------------------------------------------------------------------ http://svn.digium.com/view/asterisk?view=rev&revision=200707 By: Digium Subversion (svnbot) 2009-06-15 16:29:27 Repository: asterisk Revision: 200724 _U branches/1.6.0/ U branches/1.6.0/channels/chan_sip.c U branches/1.6.0/configs/sip.conf.sample ------------------------------------------------------------------------ r200724 | kpfleming | 2009-06-15 16:29:27 -0500 (Mon, 15 Jun 2009) | 35 lines Merged revisions 165180,200689 via svnmerge from https://origsvn.digium.com/svn/asterisk/trunk ........ r165180 | mnicholson | 2008-12-17 12:49:12 -0600 (Wed, 17 Dec 2008) | 14 lines This patch adds a new 'ignoresdpversion' option to sip.conf. When this is enabled (either globally or for a specific peer), chan_sip will treat any SDP data it receives as new data and update the media stream accordingly. By default, Asterisk will only modify the media stream if the SDP session version received is different from the current SDP session version. This option is required to interoperate with devices that have non-standard SDP session version implementations (observed by toc on the bug tracker with Microsoft OCS which always uses 0 as the session version). http://reviewboard.digium.com/r/94/ (closes issue ASTERISK-13112) Reported by: toc Tested by: toc ........ r200689 | kpfleming | 2009-06-15 15:42:38 -0500 (Mon, 15 Jun 2009) | 12 lines Accept T.38 re-INVITE responses with invalid SDP versions. This commit changes the 'incoming SDP version' check logic a bit more; when 'ignoresdpversion' is *not* set for a peer, if we initiate a re-INVITE to switch to T.38, we'll always accept the peer's SDP response, even if they don't properly increment the SDP version number as they should. If this situation occurs, a warning message will be generated suggesting that the peer's configuration be changed to include the 'ignoresdpversion' configuration option (although ideally they'd fix their SIP implementation to be RFC compliant). AST-221 ........ ------------------------------------------------------------------------ http://svn.digium.com/view/asterisk?view=rev&revision=200724 |