mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-09 22:45:49 +00:00
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
This commit is contained in:
@@ -155,6 +155,13 @@ struct ast_bridge_channel {
|
||||
* \note Needs to be atomically settable.
|
||||
*/
|
||||
enum bridge_channel_thread_state activity;
|
||||
/*! Owed events to the bridge. */
|
||||
struct {
|
||||
/*! Time started sending the current digit. (Invalid if owed.dtmf_digit is zero.) */
|
||||
struct timeval dtmf_tv;
|
||||
/*! Digit currently sending into the bridge. (zero if not sending) */
|
||||
char dtmf_digit;
|
||||
} owed;
|
||||
};
|
||||
|
||||
/*!
|
||||
|
Reference in New Issue
Block a user