[asterisk-commits] bebuild: tag certified-1.8.11-cert3-rc2 r368801 - in /certified/tags/1.8.11-c...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Tue Jun 12 09:39:50 CDT 2012
Author: bebuild
Date: Tue Jun 12 09:39:46 2012
New Revision: 368801
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=368801
Log:
Merge 368790 to 1.8.11-cert3-rc2
Removed:
certified/tags/1.8.11-cert3-rc2/certified-asterisk-1.8.11-cert3-rc1-summary.html
certified/tags/1.8.11-cert3-rc2/certified-asterisk-1.8.11-cert3-rc1-summary.txt
Modified:
certified/tags/1.8.11-cert3-rc2/ (props changed)
certified/tags/1.8.11-cert3-rc2/.version
certified/tags/1.8.11-cert3-rc2/ChangeLog
certified/tags/1.8.11-cert3-rc2/channels/chan_sip.c
Propchange: certified/tags/1.8.11-cert3-rc2/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Jun 12 09:39:46 2012
@@ -1,1 +1,2 @@
/branches/1.8:357665,358162,359656,359706,359979,360086,360884,367781,367843
+/certified/branches/1.8.11:368790
Modified: certified/tags/1.8.11-cert3-rc2/.version
URL: http://svnview.digium.com/svn/asterisk/certified/tags/1.8.11-cert3-rc2/.version?view=diff&rev=368801&r1=368800&r2=368801
==============================================================================
--- certified/tags/1.8.11-cert3-rc2/.version (original)
+++ certified/tags/1.8.11-cert3-rc2/.version Tue Jun 12 09:39:46 2012
@@ -1,1 +1,1 @@
-1.8.11-cert3-rc1
+1.8.11-cert3-rc2
Modified: certified/tags/1.8.11-cert3-rc2/ChangeLog
URL: http://svnview.digium.com/svn/asterisk/certified/tags/1.8.11-cert3-rc2/ChangeLog?view=diff&rev=368801&r1=368800&r2=368801
==============================================================================
--- certified/tags/1.8.11-cert3-rc2/ChangeLog (original)
+++ certified/tags/1.8.11-cert3-rc2/ChangeLog Tue Jun 12 09:39:46 2012
@@ -1,3 +1,29 @@
+2012-06-12 Asterisk Development Team <asteriskteam at digium.com>
+
+ * Certified Asterisk 1.8.11-cert3-rc2 Released.
+
+2012-06-12 Asterisk Development Team <asteriskteam at digium.com>
+
+ * Fix deadlock in SIP transfers that involve a REFER request
+
+ In r367163, "send to voicemail" functionality was added to the SIP
+ channel driver. This required updating the party redirecting
+ information for the channel based on the headers provided in the
+ REFER request. WHen the redirecting party information is updated on
+ the channel, a call to ast_indicate_data occurs. Because
+ handle_request_refer still had the sip_pvt locked, a deadlock could
+ occur between the pbx_thread and the do_monitor thread servicing the
+ REFER request.
+
+ This patch preserves the proper locking order between the channel
+ and the sip_pvt by ensuring that the sip_pvt is unlocked prior to
+ updating the party redirecting information on the channel.
+
+ (closes issue AST-903)
+ Reported by: Matt Jordan
+ patches:
+ jira_ast_903_trunk.patch by rmudgett (license 5621)
+
2012-05-31 Asterisk Development Team <asteriskteam at digium.com>
* Certified Asterisk 1.8.11-cert3-rc1 Released.
Modified: certified/tags/1.8.11-cert3-rc2/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/certified/tags/1.8.11-cert3-rc2/channels/chan_sip.c?view=diff&rev=368801&r1=368800&r2=368801
==============================================================================
--- certified/tags/1.8.11-cert3-rc2/channels/chan_sip.c (original)
+++ certified/tags/1.8.11-cert3-rc2/channels/chan_sip.c Tue Jun 12 09:39:46 2012
@@ -23987,16 +23987,18 @@
ast_party_redirecting_init(&redirecting);
memset(&update_redirecting, 0, sizeof(update_redirecting));
change_redirecting_information(p, req, &redirecting, &update_redirecting, FALSE);
+
+ /* Do not hold the pvt lock during a call that causes an indicate or an async_goto.
+ * Those functions lock channels which will invalidate locking order if the pvt lock
+ * is held.*/
+ sip_pvt_unlock(p);
ast_channel_update_redirecting(current.chan2, &redirecting, &update_redirecting);
ast_party_redirecting_free(&redirecting);
- /* Do not hold the pvt lock during the indicate and async_goto. Those functions
- * lock channels which will invalidate locking order if the pvt lock is held.*/
/* For blind transfers, move the call to the new extensions. For attended transfers on multiple
* servers - generate an INVITE with Replaces. Either way, let the dial plan decided
* indicate before masquerade so the indication actually makes it to the real channel
* when using local channels with MOH passthru */
- sip_pvt_unlock(p);
ast_indicate(current.chan2, AST_CONTROL_UNHOLD);
res = ast_async_goto(current.chan2, refer_to_context, refer_to, 1);
More information about the asterisk-commits
mailing list