]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-5848 --resolve
authorAnthony Minessale <anthm@freeswitch.org>
Mon, 7 Oct 2013 13:05:10 +0000 (08:05 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Mon, 7 Oct 2013 14:00:45 +0000 (19:00 +0500)
src/switch_core_session.c

index f77ef605599dc4fda2afe475429e2ba809419cb1..60358ca0ddf7a5e06f0a11a529b028a4667ea653 100644 (file)
@@ -2480,8 +2480,8 @@ void switch_core_session_init(switch_memory_pool_t *pool)
                switch_queue_create(&session_manager.thread_queue, 100000, session_manager.memory_pool);
                switch_threadattr_create(&thd_attr, session_manager.memory_pool);
                switch_threadattr_stacksize_set(thd_attr, SWITCH_THREAD_STACKSIZE);
-               switch_thread_create(&session_manager.manager_thread, thd_attr, switch_core_session_thread_pool_manager, NULL, session_manager.memory_pool);            
                session_manager.ready = 1;
+               switch_thread_create(&session_manager.manager_thread, thd_attr, switch_core_session_thread_pool_manager, NULL, session_manager.memory_pool);            
        }
 
 }
@@ -2491,15 +2491,16 @@ 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);
+       wake_queue();
 
        while(session_manager.running && --sanity > 0) {
                switch_queue_interrupt_all(session_manager.thread_queue);
                switch_yield(100000);
        }
+
+       switch_thread_join(&st, session_manager.manager_thread);
+       switch_core_hash_destroy(&session_manager.session_table);
        
 }