[svn-commits] jrose: branch 13 r421187 - in /branches/13: ./ main/channel.c
SVN commits to the Digium repositories
svn-commits at lists.digium.com
Fri Aug 15 12:08:56 CDT 2014
Author: jrose
Date: Fri Aug 15 12:08:49 2014
New Revision: 421187
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=421187
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/
........
Merged revisions 421186 from http://svn.asterisk.org/svn/asterisk/branches/12
Modified:
branches/13/ (props changed)
branches/13/main/channel.c
Propchange: branches/13/
------------------------------------------------------------------------------
Binary property 'branch-12-merged' - no diff available.
Modified: branches/13/main/channel.c
URL: http://svnview.digium.com/svn/asterisk/branches/13/main/channel.c?view=diff&rev=421187&r1=421186&r2=421187
==============================================================================
--- branches/13/main/channel.c (original)
+++ branches/13/main/channel.c Fri Aug 15 12:08:49 2014
@@ -10217,12 +10217,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 svn-commits
mailing list