From 748f0194f9e47865865cef5fc47e1801d56aed5d Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 15 Aug 2006 19:02:06 +0000 Subject: [PATCH] tweak shutdown process git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@2299 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/switch.c | 5 +---- src/switch_core.c | 10 ++++++---- src/switch_log.c | 7 +++++-- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/switch.c b/src/switch.c index 3c07f8722e..20ffc3d38b 100644 --- a/src/switch.c +++ b/src/switch.c @@ -220,12 +220,9 @@ int main(int argc, char *argv[]) switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "End existing sessions\n"); switch_core_session_hupall(); + switch_yield(10000); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Clean up modules.\n"); switch_loadable_module_shutdown(); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Tearing down environment.\n"); - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Exiting Now.\n"); switch_core_destroy(); - - return 0; } diff --git a/src/switch_core.c b/src/switch_core.c index 744f3e3bb4..e133b2dd46 100644 --- a/src/switch_core.c +++ b/src/switch_core.c @@ -3116,10 +3116,11 @@ SWITCH_DECLARE(switch_time_t) switch_core_uptime(void) SWITCH_DECLARE(switch_status_t) switch_core_destroy(void) { + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Closing Event Engine.\n"); switch_event_shutdown(); - - + switch_queue_push(runtime.sql_queue, NULL); switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Waiting for unfinished SQL transactions\n"); while (switch_queue_size(runtime.sql_queue) > 0) { @@ -3128,10 +3129,11 @@ SWITCH_DECLARE(switch_status_t) switch_core_destroy(void) switch_core_db_close(runtime.db); switch_core_db_close(runtime.event_db); switch_xml_destroy(); + + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Finalizing Shutdown.\n"); switch_log_shutdown(); - switch_yield(10000); + if (runtime.memory_pool) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Unallocating memory pool.\n"); apr_pool_destroy(runtime.memory_pool); apr_terminate(); } diff --git a/src/switch_log.c b/src/switch_log.c index 9490e7d398..5de702a46b 100644 --- a/src/switch_log.c +++ b/src/switch_log.c @@ -118,7 +118,7 @@ static void *SWITCH_THREAD_FUNC log_thread(switch_thread_t *thread, void *obj) assert(obj == NULL || obj != NULL); THREAD_RUNNING = 1; - while(LOG_QUEUE) { + while(THREAD_RUNNING == 1) { void *pop = NULL; switch_log_node_t *node = NULL; switch_log_binding_t *binding; @@ -128,7 +128,6 @@ static void *SWITCH_THREAD_FUNC log_thread(switch_thread_t *thread, void *obj) } if (!pop) { - LOG_QUEUE = NULL; break; } @@ -277,7 +276,11 @@ SWITCH_DECLARE(switch_status_t) switch_log_init(switch_memory_pool_t *pool) SWITCH_DECLARE(switch_status_t) switch_log_shutdown(void) { + THREAD_RUNNING = -1; switch_queue_push(LOG_QUEUE, NULL); + while (THREAD_RUNNING) { + switch_yield(1000); + } return SWITCH_STATUS_SUCCESS; }