]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
(closes issue #10224)
authorJoshua Colp <jcolp@digium.com>
Wed, 18 Jul 2007 14:18:53 +0000 (14:18 +0000)
committerJoshua Colp <jcolp@digium.com>
Wed, 18 Jul 2007 14:18:53 +0000 (14:18 +0000)
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

index 7f13a7f786b3e777c6be2388534761a725fadfec..880dc70f20f2eb992b1c21d505d2e35fadf8f0e2 100644 (file)
@@ -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));