diff options
author | Richard Mudgett <rmudgett@digium.com> | 2011-12-08 17:55:07 +0000 |
---|---|---|
committer | Richard Mudgett <rmudgett@digium.com> | 2011-12-08 17:55:07 +0000 |
commit | 3f13a41886778aa410f0032e042b2e612ff6f2bd (patch) | |
tree | e282344cf968fc351f71745b58a023b3c0ce3e32 /main/features.c | |
parent | e279b30f5a160784942f570a590c81b605849223 (diff) |
Mark channel running the h exten with the soft-hangup flag.
When a bridge is broken, ast_bridge_call() might execute the h exten on
the calling channel. However, that channel may not have been the channel
that broke the bridge by hanging up. The channel executing the h exten
must be in a hung up state so things like AGI run in the correct mode.
* Make sure ast_bridge_call() marks the channel it is executing the h
exten on as hung up. (The AST_SOFTHANGUP_APPUNLOAD flag is used so as to
match the pbx.c main dialplan execution loop when it executes the h
exten.)
(closes issue ASTERISK-18811)
Reported by: David Hajek
Patches:
jira_asterisk_18811_v1.8.patch (license #5621) patch uploaded by rmudgett
Tested by: David Hajek, rmudgett
........
Merged revisions 347595 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........
Merged revisions 347600 from http://svn.asterisk.org/svn/asterisk/branches/10
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@347601 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/features.c')
-rw-r--r-- | main/features.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/main/features.c b/main/features.c index 43dec798f..e03e68570 100644 --- a/main/features.c +++ b/main/features.c @@ -4294,7 +4294,13 @@ before_you_go: int save_prio; int found = 0; /* set if we find at least one match */ int spawn_error = 0; - + + /* + * Make sure that the channel is marked as hungup since we are + * going to run the "h" exten on it. + */ + ast_softhangup(chan, AST_SOFTHANGUP_APPUNLOAD); + autoloopflag = ast_test_flag(chan, AST_FLAG_IN_AUTOLOOP); ast_set_flag(chan, AST_FLAG_IN_AUTOLOOP); if (bridge_cdr && ast_opt_end_cdr_before_h_exten) { |