Author: anthm Date: Tue Aug 15 15:02:06 2006 New Revision: 2299 Modified: freeswitch/trunk/src/switch.c freeswitch/trunk/src/switch_core.c freeswitch/trunk/src/switch_log.c Log: tweak shutdown process Modified: freeswitch/trunk/src/switch.c ============================================================================== --- freeswitch/trunk/src/switch.c (original) +++ freeswitch/trunk/src/switch.c Tue Aug 15 15:02:06 2006 @@ -220,12 +220,9 @@ 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; } Modified: freeswitch/trunk/src/switch_core.c ============================================================================== --- freeswitch/trunk/src/switch_core.c (original) +++ freeswitch/trunk/src/switch_core.c Tue Aug 15 15:02:06 2006 @@ -3116,10 +3116,11 @@ 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_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_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(); } Modified: freeswitch/trunk/src/switch_log.c ============================================================================== --- freeswitch/trunk/src/switch_log.c (original) +++ freeswitch/trunk/src/switch_log.c Tue Aug 15 15:02:06 2006 @@ -118,7 +118,7 @@ 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 @@ } if (!pop) { - LOG_QUEUE = NULL; break; } @@ -277,7 +276,11 @@ 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; }
participants (1)
-
Freeswitch SVN