[svn-commits] twilson: trunk r291906 - in /trunk: ./ res/res_jabber.c

SVN commits to the Digium repositories svn-commits at lists.digium.com
Fri Oct 15 11:54:10 CDT 2010


Author: twilson
Date: Fri Oct 15 11:54:07 2010
New Revision: 291906

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

................
  r291905 | twilson | 2010-10-15 09:39:58 -0700 (Fri, 15 Oct 2010) | 14 lines
  
  Merged revisions 291904 via svnmerge from 
  https://origsvn.digium.com/svn/asterisk/branches/1.6.2
  
  ........
    r291904 | twilson | 2010-10-15 09:16:57 -0700 (Fri, 15 Oct 2010) | 7 lines
    
    Don't crash or deadlock on module unload
    
    We can't hold the lock while pthread_join is called since aji_log_hook will
    attempt to lock from the other therad. We reorder the pthread_join and
    ast_aji_disconnect so that we don't do an SSL_read() while SSL_shutdown is
    running, causing a crash.
  ........
................

Modified:
    trunk/   (props changed)
    trunk/res/res_jabber.c

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

Modified: trunk/res/res_jabber.c
URL: http://svnview.digium.com/svn/asterisk/trunk/res/res_jabber.c?view=diff&rev=291906&r1=291905&r2=291906
==============================================================================
--- trunk/res/res_jabber.c (original)
+++ trunk/res/res_jabber.c Fri Oct 15 11:54:07 2010
@@ -4695,12 +4695,12 @@
 	ast_custom_function_unregister(&jabberreceive_function);
 
 	ASTOBJ_CONTAINER_TRAVERSE(&clients, 1, {
-		ASTOBJ_RDLOCK(iterator);
+		ASTOBJ_WRLOCK(iterator);
 		ast_debug(3, "JABBER: Releasing and disconnecting client: %s\n", iterator->name);
 		iterator->state = AJI_DISCONNECTING;
+		ASTOBJ_UNLOCK(iterator);
+		pthread_join(iterator->thread, NULL);
 		ast_aji_disconnect(iterator);
-		pthread_join(iterator->thread, NULL);
-		ASTOBJ_UNLOCK(iterator);
 	});
 
 	ASTOBJ_CONTAINER_DESTROYALL(&clients, aji_client_destroy);




More information about the svn-commits mailing list