summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--main/bridge.c4
-rw-r--r--main/bridge_channel.c5
2 files changed, 7 insertions, 2 deletions
diff --git a/main/bridge.c b/main/bridge.c
index f46d31423..1e746a0f0 100644
--- a/main/bridge.c
+++ b/main/bridge.c
@@ -1764,8 +1764,8 @@ int ast_bridge_depart(struct ast_channel *chan)
}
/*
- * We are claiming the reference held by the depart bridge
- * channel thread.
+ * We are claiming the bridge_channel reference held by
+ * bridge_channel_depart_thread().
*/
ast_bridge_channel_leave_bridge(bridge_channel,
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);
}