From: Joshua Colp Date: Mon, 9 Jul 2007 14:50:04 +0000 (+0000) Subject: Merged revisions 74045 via svnmerge from X-Git-Tag: 1.6.0-beta1~3^2~2117 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=836ea36d3c436960c67684211277016f705187a2;p=thirdparty%2Fasterisk.git Merged revisions 74045 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ........ r74045 | file | 2007-07-09 11:49:05 -0300 (Mon, 09 Jul 2007) | 2 lines Few minor thread synchronization tweaks. (issue #10124 reported by gzero) ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@74046 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_skinny.c b/channels/chan_skinny.c index c7a718f358..70226766fa 100644 --- a/channels/chan_skinny.c +++ b/channels/chan_skinny.c @@ -5125,7 +5125,7 @@ static int unload_module(void) delete_devices(); ast_mutex_lock(&monlock); - if (monitor_thread && (monitor_thread != AST_PTHREADT_STOP)) { + if ((monitor_thread != AST_PTHREADT_NULL) && (monitor_thread != AST_PTHREADT_STOP)) { pthread_cancel(monitor_thread); pthread_kill(monitor_thread, SIGURG); pthread_join(monitor_thread, NULL); diff --git a/pbx/pbx_dundi.c b/pbx/pbx_dundi.c index f420ffb7d0..e63f903978 100644 --- a/pbx/pbx_dundi.c +++ b/pbx/pbx_dundi.c @@ -2123,6 +2123,9 @@ static void *network_thread(void *ignore) } check_password(); } + + netthreadid = AST_PTHREADT_NULL; + return NULL; } @@ -2158,6 +2161,8 @@ static void *process_precache(void *ign) sleep(1); } + precachethreadid = AST_PTHREADT_NULL; + return NULL; } @@ -4711,10 +4716,14 @@ static int unload_module(void) /* Stop all currently running threads */ dundi_shutdown = 1; - pthread_kill(netthreadid, SIGURG); - pthread_join(netthreadid, NULL); - pthread_kill(precachethreadid, SIGURG); - pthread_join(precachethreadid, NULL); + if (netthreadid != AST_PTHREADT_NULL) { + pthread_kill(netthreadid, SIGURG); + pthread_join(netthreadid, NULL); + } + if (precachethreadid != AST_PTHREADT_NULL) { + pthread_kill(precachethreadid, SIGURG); + pthread_join(precachethreadid, NULL); + } ast_cli_unregister_multiple(cli_dundi, sizeof(cli_dundi) / sizeof(struct ast_cli_entry)); ast_unregister_switch(&dundi_switch);