[asterisk-commits] qwell: trunk r329996 - in /trunk: ./ channels/chan_sip.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Thu Jul 28 10:46:20 CDT 2011


Author: qwell
Date: Thu Jul 28 10:46:16 2011
New Revision: 329996

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=329996
Log:
Merged revisions 329995 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/10

................
  r329995 | qwell | 2011-07-28 10:45:49 -0500 (Thu, 28 Jul 2011) | 13 lines
  
  Merged revisions 329994 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.8
  
  ........
    r329994 | qwell | 2011-07-28 10:45:24 -0500 (Thu, 28 Jul 2011) | 6 lines
    
    Fix a SIP transfer deadlock.
    
    The locking in this function is very scary.  There are like 6 structs involved.
    
    (closes issue AST-470)
  ........
................

Modified:
    trunk/   (props changed)
    trunk/channels/chan_sip.c

Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-10-merged' - no diff available.

Modified: trunk/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/trunk/channels/chan_sip.c?view=diff&rev=329996&r1=329995&r2=329996
==============================================================================
--- trunk/channels/chan_sip.c (original)
+++ trunk/channels/chan_sip.c Thu Jul 28 10:46:16 2011
@@ -23138,8 +23138,6 @@
 
 		ast_do_masquerade(target.chan1);
 
-		sip_pvt_lock(transferer); /* the transferer pvt is expected to remain locked on return */
-
 		ast_indicate(target.chan1, AST_CONTROL_UNHOLD);
 		if (target.chan2) {
 			ast_indicate(target.chan2, AST_CONTROL_UNHOLD);
@@ -23180,6 +23178,8 @@
 			ast_channel_queue_connected_line_update(target.chan1, &connected_to_transferee, NULL);
 
 		}
+		sip_pvt_lock(transferer); /* the transferer pvt is expected to remain locked on return */
+
 		ast_channel_unref(current->chan1);
 	}
 




More information about the asterisk-commits mailing list