From f836d642f9c0a46af8025dae03601bef0a4ce2ea Mon Sep 17 00:00:00 2001 From: Joshua Colp Date: Wed, 18 Jul 2007 14:18:53 +0000 Subject: [PATCH] (closes issue #10224) Reported by: irroot Record the threadid of each running thread before shutting them down as the thread themselves may change the value. git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@75583 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- pbx/pbx_dundi.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/pbx/pbx_dundi.c b/pbx/pbx_dundi.c index 7f13a7f786..880dc70f20 100644 --- a/pbx/pbx_dundi.c +++ b/pbx/pbx_dundi.c @@ -4468,17 +4468,18 @@ static int set_config(char *config_file, struct sockaddr_in* sin) static int unload_module(void) { + pthread_t previous_netthreadid = netthreadid, previous_precachethreadid = precachethreadid; ast_module_user_hangup_all(); /* Stop all currently running threads */ dundi_shutdown = 1; - if (netthreadid != AST_PTHREADT_NULL) { - pthread_kill(netthreadid, SIGURG); - pthread_join(netthreadid, NULL); + if (previous_netthreadid != AST_PTHREADT_NULL) { + pthread_kill(previous_netthreadid, SIGURG); + pthread_join(previous_netthreadid, NULL); } - if (precachethreadid != AST_PTHREADT_NULL) { - pthread_kill(precachethreadid, SIGURG); - pthread_join(precachethreadid, NULL); + if (previous_precachethreadid != AST_PTHREADT_NULL) { + pthread_kill(previous_precachethreadid, SIGURG); + pthread_join(previous_precachethreadid, NULL); } ast_cli_unregister_multiple(cli_dundi, sizeof(cli_dundi) / sizeof(struct ast_cli_entry));