diff options
author | Terry Wilson <twilson@digium.com> | 2010-10-15 16:54:07 +0000 |
---|---|---|
committer | Terry Wilson <twilson@digium.com> | 2010-10-15 16:54:07 +0000 |
commit | 45fb4df2886efebced41fd9dfd1249daca71159f (patch) | |
tree | 1c36d37983153a2dc6e63a51d972910889ce5327 | |
parent | dc0b76c04c4a867797401eec478013ecfb23ebe9 (diff) |
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.
........
................
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@291906 65c4cc65-6c06-0410-ace0-fbb531ad65f3
-rw-r--r-- | res/res_jabber.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/res/res_jabber.c b/res/res_jabber.c index 6b737e70b..0c463f0c6 100644 --- a/res/res_jabber.c +++ b/res/res_jabber.c @@ -4695,12 +4695,12 @@ static int unload_module(void) 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; - ast_aji_disconnect(iterator); - pthread_join(iterator->thread, NULL); ASTOBJ_UNLOCK(iterator); + pthread_join(iterator->thread, NULL); + ast_aji_disconnect(iterator); }); ASTOBJ_CONTAINER_DESTROYALL(&clients, aji_client_destroy); |