[asterisk-commits] bebuild: tag 11.5.0-rc2 r394181 - in /tags/11.5.0-rc2: ./ channels/

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Fri Jul 12 08:36:29 CDT 2013


Author: bebuild
Date: Fri Jul 12 08:36:28 2013
New Revision: 394181

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=394181
Log:
Merge r391334 for 11.5.0-rc2

This patch also removes summaries and updates the ChangeLog/version number

Removed:
    tags/11.5.0-rc2/asterisk-11.5.0-rc1-summary.html
    tags/11.5.0-rc2/asterisk-11.5.0-rc1-summary.txt
Modified:
    tags/11.5.0-rc2/   (props changed)
    tags/11.5.0-rc2/.version
    tags/11.5.0-rc2/ChangeLog
    tags/11.5.0-rc2/channels/chan_iax2.c

Propchange: tags/11.5.0-rc2/
------------------------------------------------------------------------------
Binary property 'branch-1.8-merged' - no diff available.

Propchange: tags/11.5.0-rc2/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Jul 12 08:36:28 2013
@@ -1,1 +1,2 @@
+/branches/11:391334
 /certified/branches/1.8.15:382389

Modified: tags/11.5.0-rc2/.version
URL: http://svnview.digium.com/svn/asterisk/tags/11.5.0-rc2/.version?view=diff&rev=394181&r1=394180&r2=394181
==============================================================================
--- tags/11.5.0-rc2/.version (original)
+++ tags/11.5.0-rc2/.version Fri Jul 12 08:36:28 2013
@@ -1,1 +1,1 @@
-11.5.0-rc1
+11.5.0-rc2

Modified: tags/11.5.0-rc2/ChangeLog
URL: http://svnview.digium.com/svn/asterisk/tags/11.5.0-rc2/ChangeLog?view=diff&rev=394181&r1=394180&r2=394181
==============================================================================
--- tags/11.5.0-rc2/ChangeLog (original)
+++ tags/11.5.0-rc2/ChangeLog Fri Jul 12 08:36:28 2013
@@ -1,3 +1,13 @@
+2013-07-12  Asterisk Development Team <asteriskteam at digium.com>
+
+	* Asterisk 11.5.0-rc2 Released.
+
+	* Properly lock and safely handle a transfer failure in IAX2
+
+	  When touching the bridgecallno, we need to lock it - otherwise a
+	  race condition can occur. This patch does the proper locking
+	  of the bridgecallno before modifying its state.
+
 2013-06-10  Asterisk Development Team <asteriskteam at digium.com>
 
 	* Asterisk 11.5.0-rc1 Released.

Modified: tags/11.5.0-rc2/channels/chan_iax2.c
URL: http://svnview.digium.com/svn/asterisk/tags/11.5.0-rc2/channels/chan_iax2.c?view=diff&rev=394181&r1=394180&r2=394181
==============================================================================
--- tags/11.5.0-rc2/channels/chan_iax2.c (original)
+++ tags/11.5.0-rc2/channels/chan_iax2.c Fri Jul 12 08:36:28 2013
@@ -11509,15 +11509,28 @@
 				}
 				break;
 			case IAX_COMMAND_TXREJ:
-				iaxs[fr->callno]->transferring = 0;
+				if (iaxs[fr->callno]->bridgecallno) {
+					while (ast_mutex_trylock(&iaxsl[iaxs[fr->callno]->bridgecallno])) {
+						DEADLOCK_AVOIDANCE(&iaxsl[fr->callno]);
+					}
+					if (!iaxs[fr->callno]) {
+						break;
+					}
+				}
+
+				iaxs[fr->callno]->transferring = TRANSFER_NONE;
 				ast_verb(3, "Channel '%s' unable to transfer\n", iaxs[fr->callno]->owner ? ast_channel_name(iaxs[fr->callno]->owner) : "<Unknown>");
 				memset(&iaxs[fr->callno]->transfer, 0, sizeof(iaxs[fr->callno]->transfer));
-				if (iaxs[fr->callno]->bridgecallno) {
-					if (iaxs[iaxs[fr->callno]->bridgecallno]->transferring) {
-						iaxs[iaxs[fr->callno]->bridgecallno]->transferring = 0;
-						send_command(iaxs[iaxs[fr->callno]->bridgecallno], AST_FRAME_IAX, IAX_COMMAND_TXREJ, 0, NULL, 0, -1);
-					}
+
+				if (!iaxs[fr->callno]->bridgecallno) {
+					break;
 				}
+
+				if (iaxs[iaxs[fr->callno]->bridgecallno]->transferring) {
+					iaxs[iaxs[fr->callno]->bridgecallno]->transferring = TRANSFER_NONE;
+					send_command(iaxs[iaxs[fr->callno]->bridgecallno], AST_FRAME_IAX, IAX_COMMAND_TXREJ, 0, NULL, 0, -1);
+				}
+				ast_mutex_unlock(&iaxsl[iaxs[fr->callno]->bridgecallno]);
 				break;
 			case IAX_COMMAND_TXREADY:
 				if (iaxs[fr->callno]->bridgecallno) {




More information about the asterisk-commits mailing list