From cadfcdfe8ebba81a707eb3aeb8dab5b0d9ba3fbb Mon Sep 17 00:00:00 2001 From: "Kevin P. Fleming" <kpfleming@digium.com> Date: Fri, 10 Feb 2006 20:40:00 +0000 Subject: [PATCH] Merged revisions 9404 via svnmerge from 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 | 4 +--- channels/chan_mgcp.c | 8 ++------ channels/chan_sip.c | 2 -- devicestate.c | 8 ++------ dnsmgr.c | 6 ++---- 5 files changed, 7 insertions(+), 21 deletions(-) diff --git a/cdr.c b/cdr.c index 2744e27492..43ec91b1d8 100644 --- 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); diff --git a/channels/chan_mgcp.c b/channels/chan_mgcp.c index 27161507d7..e0ddea19af 100644 --- a/channels/chan_mgcp.c +++ b/channels/chan_mgcp.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> * @@ -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; diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 5b7c0401eb..fe68c143f3 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -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); diff --git a/devicestate.c b/devicestate.c index 93200a9c0d..4131503c8f 100644 --- a/devicestate.c +++ b/devicestate.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> * @@ -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; } diff --git a/dnsmgr.c b/dnsmgr.c index c758982f51..4fb699e955 100644 --- 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 {