[asterisk-dev] [Code Review] 3700: sip.conf progressinband=never should mean 'never'

one47 reviewboard at asterisk.org
Wed Jul 2 10:44:03 CDT 2014


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/3700/
-----------------------------------------------------------

(Updated July 2, 2014, 3:44 p.m.)


Review request for Asterisk Developers.


Changes
-------

Re-added reference to bug tracker because reviewboard wants 23972 and not ASTERISK-23972 :(


Bugs: 23972
    https://issues.asterisk.org/jira/browse/23972


Repository: Asterisk


Description
-------

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.

Proposed solution, applied in this patch:

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.

NOTE2: Not sure this change is safe for Asterisk 11 as it may cause an unexpected change of behaviour for some users.


Diffs
-----

  /trunk/channels/chan_sip.c 417704 

Diff: https://reviewboard.asterisk.org/r/3700/diff/


Testing
-------

The change to sip_write() and SIP_PROGRESS_SENT has been tested on a couple of hundred live servers running 1.6.2, 1.8.2x and 11.10 - No obvious issues, and correctly resolves some double ringing and no-ringing issues with Polycom and Yealink handsets.

The change to sip_indicate() tested with progressinband=never and progressinband=no with both SIP and Websockets endpoints. Intended behaviour observed.


Thanks,

one47

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20140702/7aeed994/attachment-0001.html>


More information about the asterisk-dev mailing list