Handle DTMF and hold wrapup when a channel leaves the bridging system.
authorRichard Mudgett <rmudgett@digium.com>
Fri, 23 Aug 2013 18:33:36 +0000 (18:33 +0000)
committerRichard Mudgett <rmudgett@digium.com>
Fri, 23 Aug 2013 18:33:36 +0000 (18:33 +0000)
commit6ebfac8e70b0863fd96ee4fe6ca4b254696fe9c4
treedf6a91c733cc32ae5179493b800384824dcdcfa3
parent31ab4866275aa28f6ec9fe7ce166b4f86f8ecf24
Handle DTMF and hold wrapup when a channel leaves the bridging system.

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.

(closes issue ASTERISK-22043)
Reported by: Matt Jordan

Review: https://reviewboard.asterisk.org/r/2791/

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@397577 65c4cc65-6c06-0410-ace0-fbb531ad65f3
bridges/bridge_builtin_interval_features.c
include/asterisk/bridge_channel.h
include/asterisk/bridge_channel_internal.h
include/asterisk/channel.h
main/bridge.c
main/bridge_channel.c
main/channel.c
main/channel_internal_api.c
res/res_musiconhold.c