[asterisk-commits] jrose: branch 12 r421186 - /branches/12/main/channel.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Fri Aug 15 11:56:38 CDT 2014


Author: jrose
Date: Fri Aug 15 11:56:33 2014
New Revision: 421186

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=421186
Log:
Bridging: Fix a behavioral change when checking if a channel is leaving a bridge

r420934 introduced some failures in the test suite.  Upon investigating, it was
discovered that differences in the way we were evaluating whether a channel was in
the process of leaving a bridge were causing some reinvites not to occur (mostly
reinvites back to Asterisk when ending a call). This patch fixes that behavioral
change.

ASTERISK-24027 #close
Reported by: Matt Jordan
Review: https://reviewboard.asterisk.org/r/3910/

Modified:
    branches/12/main/channel.c

Modified: branches/12/main/channel.c
URL: http://svnview.digium.com/svn/asterisk/branches/12/main/channel.c?view=diff&rev=421186&r1=421185&r2=421186
==============================================================================
--- branches/12/main/channel.c (original)
+++ branches/12/main/channel.c Fri Aug 15 11:56:33 2014
@@ -10183,12 +10183,14 @@
 {
 	int hangup_flags = ast_channel_softhangup_internal_flag(chan);
 	int hangup_test = hangup_flags & AST_SOFTHANGUP_ASYNCGOTO;
-
-	/* This function should only return true if only the ASYNCGOTO
-	 * is set. It should false if any other flag is set or if the
-	 * ASYNCGOTO flag is not set.
+	int unbridge = ast_channel_unbridged(chan);
+
+	/* This function should only return true if either the unbridged flag or
+	 * the ASYNCGOTO soft hangup flag is set and when no other soft hangup
+	 * flags are set. Any other soft hangup flags being set should make it
+	 * return false.
 	 */
-	return (hangup_test && (hangup_test == hangup_flags));
+	return ((hangup_test || unbridge) && (hangup_test == hangup_flags));
 }
 
 struct ast_channel *ast_channel_bridge_peer(struct ast_channel *chan)




More information about the asterisk-commits mailing list