[asterisk-commits] rmudgett: branch 1.8 r347595 - /branches/1.8/main/features.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Thu Dec 8 11:50:25 CST 2011


Author: rmudgett
Date: Thu Dec  8 11:50:22 2011
New Revision: 347595

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=347595
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

Modified:
    branches/1.8/main/features.c

Modified: branches/1.8/main/features.c
URL: http://svnview.digium.com/svn/asterisk/branches/1.8/main/features.c?view=diff&rev=347595&r1=347594&r2=347595
==============================================================================
--- branches/1.8/main/features.c (original)
+++ branches/1.8/main/features.c Thu Dec  8 11:50:22 2011
@@ -4278,7 +4278,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