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
This commit is contained in:
parent
e279b30f5a
commit
3f13a41886
|
@ -4294,7 +4294,13 @@ before_you_go:
|
||||||
int save_prio;
|
int save_prio;
|
||||||
int found = 0; /* set if we find at least one match */
|
int found = 0; /* set if we find at least one match */
|
||||||
int spawn_error = 0;
|
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);
|
autoloopflag = ast_test_flag(chan, AST_FLAG_IN_AUTOLOOP);
|
||||||
ast_set_flag(chan, AST_FLAG_IN_AUTOLOOP);
|
ast_set_flag(chan, AST_FLAG_IN_AUTOLOOP);
|
||||||
if (bridge_cdr && ast_opt_end_cdr_before_h_exten) {
|
if (bridge_cdr && ast_opt_end_cdr_before_h_exten) {
|
||||||
|
|
Loading…
Reference in New Issue