FS-4573 --resolve
This commit is contained in:
parent
8e5f5baa06
commit
3af25d503c
|
@ -289,6 +289,7 @@ struct switch_session_manager {
|
|||
uint32_t session_limit;
|
||||
switch_size_t session_id;
|
||||
switch_queue_t *thread_queue;
|
||||
switch_thread_t *manager_thread;
|
||||
switch_mutex_t *mutex;
|
||||
int ready;
|
||||
int running;
|
||||
|
|
|
@ -2461,7 +2461,7 @@ SWITCH_DECLARE(switch_status_t) switch_core_destroy(void)
|
|||
switch_nat_shutdown();
|
||||
}
|
||||
switch_xml_destroy();
|
||||
|
||||
switch_core_session_uninit();
|
||||
switch_console_shutdown();
|
||||
|
||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CONSOLE, "Closing Event Engine.\n");
|
||||
|
|
|
@ -2230,15 +2230,13 @@ void switch_core_session_init(switch_memory_pool_t *pool)
|
|||
switch_core_hash_init(&session_manager.session_table, session_manager.memory_pool);
|
||||
|
||||
if (switch_test_flag((&runtime), SCF_SESSION_THREAD_POOL)) {
|
||||
switch_thread_t *thread;
|
||||
switch_threadattr_t *thd_attr;
|
||||
|
||||
switch_mutex_init(&session_manager.mutex, SWITCH_MUTEX_NESTED, session_manager.memory_pool);
|
||||
switch_queue_create(&session_manager.thread_queue, 100000, session_manager.memory_pool);
|
||||
switch_threadattr_create(&thd_attr, session_manager.memory_pool);
|
||||
switch_threadattr_detach_set(thd_attr, 1);
|
||||
switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
|
||||
switch_thread_create(&thread, thd_attr, switch_core_session_thread_pool_manager, NULL, session_manager.memory_pool);
|
||||
switch_thread_create(&session_manager.manager_thread, thd_attr, switch_core_session_thread_pool_manager, NULL, session_manager.memory_pool);
|
||||
session_manager.ready = 1;
|
||||
}
|
||||
|
||||
|
@ -2247,10 +2245,13 @@ void switch_core_session_init(switch_memory_pool_t *pool)
|
|||
void switch_core_session_uninit(void)
|
||||
{
|
||||
int sanity = 100;
|
||||
switch_status_t st = SWITCH_STATUS_FALSE;
|
||||
|
||||
switch_core_hash_destroy(&session_manager.session_table);
|
||||
session_manager.ready = 0;
|
||||
|
||||
switch_thread_join(&st, session_manager.manager_thread);
|
||||
|
||||
while(session_manager.running && --sanity > 0) {
|
||||
switch_queue_interrupt_all(session_manager.thread_queue);
|
||||
switch_yield(100000);
|
||||
|
|
Loading…
Reference in New Issue