From: Richard Mudgett Date: Thu, 8 Dec 2011 17:50:22 +0000 (+0000) Subject: Mark channel running the h exten with the soft-hangup flag. X-Git-Tag: 1.8.9.0-rc1~33 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0e9e42e04465c0c9fecda8476ba06cdfbec8053c;p=thirdparty%2Fasterisk.git 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 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@347595 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/main/features.c b/main/features.c index 2f2e4f3967..133daba87f 100644 --- a/main/features.c +++ b/main/features.c @@ -4278,7 +4278,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) {