Summary: | ASTERISK-26992: chan_sip: Bell Canada Interop on Asterisk 13.15 fails due to no RTP on SDP sendrecv | ||
Reporter: | David Brillert (aragon) | Labels: | |
Date Opened: | 2017-05-10 09:25:26 | Date Closed: | 2018-05-04 15:28:34 |
Priority: | Major | Regression? | |
Status: | Closed/Complete | Components: | Channels/chan_sip/General |
Versions: | 13.15.0 | Frequency of Occurrence | Constant |
Related Issues: | |||
Environment: | Asterisk 13.15, CentOS6 x64 | Attachments: | ( 0) fail_with_rtp.pcapng ( 1) pass_with_rtp.pcapng |
Description: | I have been working to complete Bell Canada interop testing with Bell Canada and Asterisk 13.15 but the interop does not pass due to outgoing call setup failure. When using 11.25 the test case does not fail. Since 11.25 is no longer maintained I am trying to complete the interop with *13
I ran tests and pcaps using both versions to diagnose where the RTP is failing. Because the 183 session in progress message SDP has sendrecv Bell expects RTP from Asterisk. The passed test case is using Asterisk 11.25 and Asterisk is sending RTP in response to sendrecv. In the Asterisk 13.15 failure Asterisk does not send RTP after the sendrecv. Two traces are attached: 1. Asterisk 11.25 'pass with rtp.pcapng' where RTP is established after the sendrecv and the call completes OK. 2. Asterisk 13.15 'fail with rtp.pcapng' where RTP is not established after the sendrecv and the call fails. I have tried multiple setting in sip.conf including progressinband=yes and no and never without any improvement. sip.conf {noformat} transport = udp icesupport = no nat = no directmedia = yes insecure = port,invite disallowed_methods = UPDATE session-timers = accept session-expires = 1800 session-minse = 90 session-refresher = uac encryption = no qualify = yes qualifyfreq = 60 disallow = all allow = ulaw {noformat} | ||
Comments: | By: Asterisk Team (asteriskteam) 2017-05-10 09:25:27.673-0500 Thanks for creating a report! The issue has entered the triage process. That means the issue will wait in this status until a Bug Marshal has an opportunity to review the issue. Once the issue has been reviewed you will receive comments regarding the next steps towards resolution. A good first step is for you to review the [Asterisk Issue Guidelines|https://wiki.asterisk.org/wiki/display/AST/Asterisk+Issue+Guidelines] if you haven't already. The guidelines detail what is expected from an Asterisk issue report. Then, if you are submitting a patch, please review the [Patch Contribution Process|https://wiki.asterisk.org/wiki/display/AST/Patch+Contribution+Process]. By: David Brillert (aragon) 2017-05-10 09:28:03.415-0500 *13.15 trace call failure pcap By: David Brillert (aragon) 2017-05-10 09:28:25.817-0500 11.25 call OK pcap By: David Brillert (aragon) 2017-05-12 14:13:08.273-0500 Ugh... I got this working by putting this into the global sip.conf file 'progressinband = yes' Putting 'progressinband = yes' into the customer peer sip.conf file does not override the global file when 'progressinband = no' where the default setting is = no. The sip.conf.sample file does not specify whether a custom peer setting will override the global file. Therefore I don't know if this is a 1. bug 2. configuration issue or 3. documentation issue. 1. Should 'progressinband = yes' in a custom sip.conf file for peers override the global sip.conf file if the global = no? If it should override then this is a bug because the peer setting =yes did not work if the global sip.conf 'progressinband = no' 2. If a peer sip.conf peer file cannot override the global sip.conf file value than this could be considered a configuration issue; however 3. The sip.conf.sample file could explain that this is a global value and not adjustable per peer. So which is it? By: David Brillert (aragon) 2017-05-12 14:22:50.764-0500 Or perhaps this commit changed some default behavior in the 183 early progress SDP RTP response from Asterisk... {noformat} 2014-07-17 21:17 +0000 [r418832-418870] Matthew Jordan <mjordan@digium.com> * channels/chan_sip.c, UPGRADE.txt: chan_sip: Make progressinband=never really mean 'never' progressinband=never in sip.conf is easily defeated if an onward trunk sends a progress indication of its own. This is almost certain to happen if the onward trunk is ISDN or IAX as these technologies send a progress indication even if early media is not required. This progress message is passed to the caller, and causes the "never" option to be rather badly named. This patch changes the behaviour of this setting in the following ways: 1) In sip_write(), do not pass the media unless we have either progressed beyond INV_EARLY_MEDIA, or we are in INV_EARLY_MEDIA state, and early media is both set-up and wanted. This helps resolve double-ringing on some buggy handsets. 2) In sip_indicate(), if we see AST_CONTROL_PROGRESS, but SIP_PROG_INBAND_NEVER is set, send a 180 Ringing instead to avoid implicitly enabling early media. Avoid sending double ring indications. NOTE: the meaning of the SIP_PROGRESS_SENT flag changes slightly in this patch to also encapsulate the fact that a channel has *sent or received* a 183 Progress indication. This makes the updated code in sip_write() much more simple. Review: https://reviewboard.asterisk.org/r/3700 ASTERISK-23972 #close Reported by: Steve Davies patches: inband_never_present_early_media2 uploaded by Steve Davies (License 5012) {noformat} Regardless it is pretty clear that the per peer setting does not override the global setting after much testing. By: Rusty Newton (rnewton) 2017-05-15 20:09:17.160-0500 {quote} The sip.conf.sample file does not specify whether a custom peer setting will override the global file. Therefore I don't know if this is a 1. bug 2. configuration issue or 3. documentation issue. 1. Should 'progressinband = yes' in a custom sip.conf file for peers override the global sip.conf file if the global = no? If it should override then this is a bug because the peer setting =yes did not work if the global sip.conf 'progressinband = no' 2. If a peer sip.conf peer file cannot override the global sip.conf file value than this could be considered a configuration issue; however 3. The sip.conf.sample file could explain that this is a global value and not adjustable per peer. {quote} I'm not sure. Though, I'm opening up this issue so that it is available for anyone to look into, as you have provided clear information on the situation. chan_sip has been under extended support for a while so note that the resolution time will depend on interest from community developers. |