Merged revisions 9404 via svnmerge from
authorKevin P. Fleming <kpfleming@digium.com>
Fri, 10 Feb 2006 20:40:00 +0000 (20:40 +0000)
committerKevin P. Fleming <kpfleming@digium.com>
Fri, 10 Feb 2006 20:40:00 +0000 (20:40 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r9404 | kpfleming | 2006-02-10 14:38:59 -0600 (Fri, 10 Feb 2006) | 2 lines

don't create monitor threads in detached mode, when we need to be able to pthread_join() them later if the module is unloaded (solve crash-on-unload problem for these channel modules)

........

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@9405 65c4cc65-6c06-0410-ace0-fbb531ad65f3

cdr.c
channels/chan_mgcp.c
channels/chan_sip.c
devicestate.c
dnsmgr.c

diff --git a/cdr.c b/cdr.c
index 2744e27..43ec91b 100644 (file)
--- a/cdr.c
+++ b/cdr.c
@@ -1,7 +1,7 @@
 /*
  * Asterisk -- An open source telephony toolkit.
  *
- * Copyright (C) 1999 - 2005, Digium, Inc.
+ * Copyright (C) 1999 - 2006, Digium, Inc.
  *
  * Mark Spencer <markster@digium.com>
  *
@@ -1181,8 +1181,6 @@ static int do_reload(void)
           if it does not exist */
        if (enabled && batchmode && (!was_enabled || !was_batchmode) && (cdr_thread == AST_PTHREADT_NULL)) {
                ast_cond_init(&cdr_pending_cond, NULL);
-               pthread_attr_init(&attr);
-               pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
                if (ast_pthread_create(&cdr_thread, &attr, do_cdr, NULL) < 0) {
                        ast_log(LOG_ERROR, "Unable to start CDR thread.\n");
                        ast_sched_del(sched, cdr_sched);
index 2716150..e0ddea1 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Asterisk -- An open source telephony toolkit.
  *
- * Copyright (C) 1999 - 2005, Digium, Inc.
+ * Copyright (C) 1999 - 2006, Digium, Inc.
  *
  * Mark Spencer <markster@digium.com>
  *
@@ -3528,10 +3528,6 @@ static void *do_monitor(void *data)
 
 static int restart_monitor(void)
 {
-       pthread_attr_t attr;
-       pthread_attr_init(&attr);
-        pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);   
-
        /* If we're supposed to be stopped -- stay stopped */
        if (monitor_thread == AST_PTHREADT_STOP)
                return 0;
@@ -3549,7 +3545,7 @@ static int restart_monitor(void)
                pthread_kill(monitor_thread, SIGURG);
        } else {
                /* Start a new monitor */
-               if (ast_pthread_create(&monitor_thread, &attr, do_monitor, NULL) < 0) {
+               if (ast_pthread_create(&monitor_thread, NULL, do_monitor, NULL) < 0) {
                        ast_mutex_unlock(&monlock);
                        ast_log(LOG_ERROR, "Unable to start monitor thread.\n");
                        return -1;
index 5b7c040..fe68c14 100644 (file)
@@ -11464,8 +11464,6 @@ static int restart_monitor(void)
                /* Wake up the thread */
                pthread_kill(monitor_thread, SIGURG);
        } else {
-               pthread_attr_init(&attr);
-               pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
                /* Start a new monitor */
                if (ast_pthread_create(&monitor_thread, &attr, do_monitor, NULL) < 0) {
                        ast_mutex_unlock(&monlock);
index 93200a9..4131503 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Asterisk -- An open source telephony toolkit.
  *
- * Copyright (C) 1999 - 2005, Digium, Inc.
+ * Copyright (C) 1999 - 2006, Digium, Inc.
  *
  * Mark Spencer <markster@digium.com>
  *
@@ -265,12 +265,8 @@ static void *do_devstate_changes(void *data)
 /*! \brief Initialize the device state engine in separate thread */
 int ast_device_state_engine_init(void)
 {
-       pthread_attr_t attr;
-
        ast_cond_init(&change_pending, NULL);
-       pthread_attr_init(&attr);
-       pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
-       if (ast_pthread_create(&change_thread, &attr, do_devstate_changes, NULL) < 0) {
+       if (ast_pthread_create(&change_thread, NULL, do_devstate_changes, NULL) < 0) {
                ast_log(LOG_ERROR, "Unable to start device state change thread.\n");
                return -1;
        }
index c758982..4fb699e 100644 (file)
--- a/dnsmgr.c
+++ b/dnsmgr.c
@@ -1,7 +1,7 @@
 /*
  * Asterisk -- An open source telephony toolkit.
  *
- * Copyright (C) 2005, Kevin P. Fleming
+ * Copyright (C) 2005-2006, Kevin P. Fleming
  *
  * Kevin P. Fleming <kpfleming@digium.com>
  *
@@ -338,9 +338,7 @@ static int do_reload(int loading)
        /* if this reload enabled the manager, create the background thread
           if it does not exist */
        if (enabled && !was_enabled && (refresh_thread == AST_PTHREADT_NULL)) {
-               pthread_attr_init(&attr);
-               pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
-               if (ast_pthread_create(&refresh_thread, &attr, do_refresh, NULL) < 0) {
+               if (ast_pthread_create(&refresh_thread, NULL, do_refresh, NULL) < 0) {
                        ast_log(LOG_ERROR, "Unable to start refresh thread.\n");
                }
                else {