[asterisk-commits] mmichelson: branch 1.6.0 r139458 - in /branches/1.6.0: ./ channels/chan_iax2.c
    SVN commits to the Asterisk project 
    asterisk-commits at lists.digium.com
       
    Fri Aug 22 11:59:21 CDT 2008
    
    
  
Author: mmichelson
Date: Fri Aug 22 11:59:21 2008
New Revision: 139458
URL: http://svn.digium.com/view/asterisk?view=rev&rev=139458
Log:
Merged revisions 139457 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/trunk
................
r139457 | mmichelson | 2008-08-22 11:58:21 -0500 (Fri, 22 Aug 2008) | 15 lines
Merged revisions 139456 via svnmerge from 
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r139456 | mmichelson | 2008-08-22 11:57:38 -0500 (Fri, 22 Aug 2008) | 7 lines
Prevent a deadlock in chan_iax2 resulting from
incorrect locking order between iax2_pvt and
ast_channel structures.
AST-13
........
................
Modified:
    branches/1.6.0/   (props changed)
    branches/1.6.0/channels/chan_iax2.c
Propchange: branches/1.6.0/
------------------------------------------------------------------------------
Binary property 'trunk-merged' - no diff available.
Modified: branches/1.6.0/channels/chan_iax2.c
URL: http://svn.digium.com/view/asterisk/branches/1.6.0/channels/chan_iax2.c?view=diff&rev=139458&r1=139457&r2=139458
==============================================================================
--- branches/1.6.0/channels/chan_iax2.c (original)
+++ branches/1.6.0/channels/chan_iax2.c Fri Aug 22 11:59:21 2008
@@ -8694,11 +8694,14 @@
 
 					pbx_builtin_setvar_helper(bridged_chan, "BLINDTRANSFER", iaxs[fr->callno]->owner->name);
 					if (!strcmp(ies.called_number, ast_parking_ext())) {
-						if (iax_park(bridged_chan, iaxs[fr->callno]->owner)) {
+						struct ast_channel *saved_channel = iaxs[fr->callno]->owner;
+						ast_mutex_unlock(iaxsl[fr->callno]);
+						if (iax_park(bridged_chan, saved_channel)) {
 							ast_log(LOG_WARNING, "Failed to park call on '%s'\n", bridged_chan->name);
 						} else {
 							ast_debug(1, "Parked call on '%s'\n", ast_bridged_channel(iaxs[fr->callno]->owner)->name);
 						}
+						ast_mutex_lock(iaxsl[fr->callno]);
 					} else {
 						if (ast_async_goto(bridged_chan, iaxs[fr->callno]->context, ies.called_number, 1))
 							ast_log(LOG_WARNING, "Async goto of '%s' to '%s@%s' failed\n", bridged_chan->name, 
    
    
More information about the asterisk-commits
mailing list