[asterisk-dev] [Code Review] 2791: Handle DTMF and hold wrapup when a channel leaves the bridging system.

rmudgett reviewboard at asterisk.org
Thu Aug 22 19:31:39 CDT 2013


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

Review request for Asterisk Developers.


Bugs: ASTERISK-22043
    https://issues.asterisk.org/jira/browse/ASTERISK-22043


Repository: Asterisk


Description
-------

DTMF start/end and hold/unhold events have state because a DTMF begin event and hold event must be ended by something.

The following cases need to be handled when a channel is moved around in the system.
* When a channel leaves a bridge it may owe a DTMF end event to the bridge.
* When a channel leaves a bridge it may owe an UNHOLD event to the bridge.  (This case is explicitly ignored because things like transfers need explicit control over this.)
* When a channel leaves the bridging system it may need to simulate a DTMF end event to the channel.
* When a channel leaves the bridging system it may need to simulate an UNHOLD event to the channel.

The patch also fixes the following:
* Fixes playing a file and restarting MOH using the latest MOH class used.


Diffs
-----

  /trunk/bridges/bridge_builtin_interval_features.c 397503 
  /trunk/include/asterisk/bridge_channel.h 397503 
  /trunk/include/asterisk/bridge_channel_internal.h 397503 
  /trunk/include/asterisk/channel.h 397503 
  /trunk/main/bridge.c 397503 
  /trunk/main/bridge_channel.c 397503 
  /trunk/main/channel.c 397503 
  /trunk/main/channel_internal_api.c 397503 
  /trunk/res/res_musiconhold.c 397503 

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


Testing
-------

* Initiated a call, started a DTMF digit, and kicked the channel that started the digit out of the bridge.  The kicked channel put a DTMF end event into the bridge and the peer also ended the DTMF digit since it left the bridge at the same time.

* Initiated a call, put the call on hold, and kicked the channel that started the hold out of the bridge.  The peer channel did an unhold event when it left the bridge.

* Initiated a call with the L dial option announcing time intervals.  Put the call on hold.  The channel listening to hold MOH had the MOH interrupted while the announcements were played.  The MOH resumed when the announcement finished.  The difference with this patch is that the same MOH class was resumed and not the default MOH.


Thanks,

rmudgett

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20130823/ebd7e054/attachment-0001.htm>


More information about the asterisk-dev mailing list