summaryrefslogtreecommitdiff
path: root/apps/app_stack.c
diff options
context:
space:
mode:
authorJonathan Rose <jrose@digium.com>2014-08-13 16:24:37 +0000
committerJonathan Rose <jrose@digium.com>2014-08-13 16:24:37 +0000
commitd4695774e7ef3b4699b8283f175d161cd19e3d25 (patch)
tree4f59a5f5dc0094ffbe928dd21b6095defa056832 /apps/app_stack.c
parent6a6702bb0fff957c0264e872fe0760efe21a1e20 (diff)
Bridges: Fix feature interruption/unintended kick caused by external actions
If a manager or CLI user attached a mixmonitor to a call running a dynamic bridge feature while in a bridge, the feature would be interrupted and the channel would be forcibly kicked out of the bridge (usually ending the call during a simple 1 to 1 call). This would also occur during any similar action that could set the unbridge soft hangup flag, so the fix for this was to remove unbridge from the soft hangup flags and make it a separate thing all together. ASTERISK-24027 #close Reported by: mjordan Review: https://reviewboard.asterisk.org/r/3900/ ........ Merged revisions 420934 from http://svn.asterisk.org/svn/asterisk/branches/12 ........ Merged revisions 420940 from http://svn.asterisk.org/svn/asterisk/branches/13 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@420947 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'apps/app_stack.c')
-rw-r--r--apps/app_stack.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/apps/app_stack.c b/apps/app_stack.c
index b05afb0e5..c9d37cd34 100644
--- a/apps/app_stack.c
+++ b/apps/app_stack.c
@@ -976,10 +976,9 @@ static int gosub_run(struct ast_channel *chan, const char *sub_args, int ignore_
/* Save non-hangup softhangup flags. */
saved_hangup_flags = ast_channel_softhangup_internal_flag(chan)
- & (AST_SOFTHANGUP_ASYNCGOTO | AST_SOFTHANGUP_UNBRIDGE);
+ & AST_SOFTHANGUP_ASYNCGOTO;
if (saved_hangup_flags) {
- ast_channel_clear_softhangup(chan,
- AST_SOFTHANGUP_ASYNCGOTO | AST_SOFTHANGUP_UNBRIDGE);
+ ast_channel_clear_softhangup(chan, AST_SOFTHANGUP_ASYNCGOTO);
}
/* Save autoloop flag */
@@ -1028,10 +1027,6 @@ static int gosub_run(struct ast_channel *chan, const char *sub_args, int ignore_
*/
do {
/* Check for hangup. */
- if (ast_channel_softhangup_internal_flag(chan) & AST_SOFTHANGUP_UNBRIDGE) {
- saved_hangup_flags |= AST_SOFTHANGUP_UNBRIDGE;
- ast_channel_clear_softhangup(chan, AST_SOFTHANGUP_UNBRIDGE);
- }
if (ast_check_hangup(chan)) {
if (ast_channel_softhangup_internal_flag(chan) & AST_SOFTHANGUP_ASYNCGOTO) {
ast_log(LOG_ERROR, "%s An async goto just messed up our execution location.\n",