summaryrefslogtreecommitdiff
path: root/main/bridge_channel.c
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2014-11-24 20:32:29 +0000
committerRichard Mudgett <rmudgett@digium.com>2014-11-24 20:32:29 +0000
commitc38ffca9a180d118a090c1234ca64d811c893713 (patch)
tree1339ace96ffaf2019f358853a45cac700ceab84e /main/bridge_channel.c
parent3576ae47f44136a1751b937615aff7e8ee64026a (diff)
DTMF hooks: Leaving channels need to push any collected digits into the bridge.
Any partially collected DTMF digits for a DTMF hook need to be pushed into the bridge when a channel leaves the bridging system as if there were a timeout. Review: https://reviewboard.asterisk.org/r/4199/ ........ Merged revisions 428601 from http://svn.asterisk.org/svn/asterisk/branches/12 ........ Merged revisions 428602 from http://svn.asterisk.org/svn/asterisk/branches/13 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@428603 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/bridge_channel.c')
-rw-r--r--main/bridge_channel.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/main/bridge_channel.c b/main/bridge_channel.c
index 60fa03082..e59d28e17 100644
--- a/main/bridge_channel.c
+++ b/main/bridge_channel.c
@@ -2564,10 +2564,15 @@ int bridge_channel_internal_join(struct ast_bridge_channel *bridge_channel)
ast_bridge_unlock(bridge_channel->bridge);
bridge_channel_event_join_leave(bridge_channel, AST_BRIDGE_HOOK_TYPE_JOIN);
+
while (bridge_channel->state == BRIDGE_CHANNEL_STATE_WAIT) {
/* Wait for something to do. */
bridge_channel_wait(bridge_channel);
}
+
+ /* Force a timeout on any accumulated DTMF hook digits. */
+ ast_bridge_channel_feature_digit(bridge_channel, 0);
+
bridge_channel_event_join_leave(bridge_channel, AST_BRIDGE_HOOK_TYPE_LEAVE);
ast_bridge_channel_lock_bridge(bridge_channel);
}