[asterisk-commits] rmudgett: trunk r347601 - in /trunk: ./ main/features.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Thu Dec 8 11:55:11 CST 2011
Author: rmudgett
Date: Thu Dec 8 11:55:07 2011
New Revision: 347601
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=347601
Log:
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
Modified:
trunk/ (props changed)
trunk/main/features.c
Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-10-merged' - no diff available.
Modified: trunk/main/features.c
URL: http://svnview.digium.com/svn/asterisk/trunk/main/features.c?view=diff&rev=347601&r1=347600&r2=347601
==============================================================================
--- trunk/main/features.c (original)
+++ trunk/main/features.c Thu Dec 8 11:55:07 2011
@@ -4294,7 +4294,13 @@
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) {
More information about the asterisk-commits
mailing list