From 3d73952cdb2f9bf06802aa8d40931835bcc34701 Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Tue, 31 Mar 2009 23:57:07 +0000 Subject: [PATCH] speed up loop git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@12861 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/mod/endpoints/mod_sofia/sofia.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index 28f3f03554..978157142b 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -640,7 +640,8 @@ void *SWITCH_THREAD_FUNC sofia_profile_worker_thread_run(switch_thread_t *thread uint32_t gateway_loops = 0; int loops = 0; uint32_t qsize; - + void *pop; + ireg_loops = IREG_SECONDS; gateway_loops = GATEWAY_SECONDS; @@ -652,7 +653,6 @@ void *SWITCH_THREAD_FUNC sofia_profile_worker_thread_run(switch_thread_t *thread while ((mod_sofia_globals.running == 1 && sofia_test_pflag(profile, PFLAG_RUNNING)) || qsize) { if (qsize) { - void *pop; switch_mutex_lock(profile->ireg_mutex); while (switch_queue_trypop(profile->sql_queue, &pop) == SWITCH_STATUS_SUCCESS && pop) { sofia_glue_actually_execute_sql(profile, SWITCH_TRUE, (char *) pop, NULL); @@ -675,10 +675,17 @@ void *SWITCH_THREAD_FUNC sofia_profile_worker_thread_run(switch_thread_t *thread loops = 0; } - switch_yield(10000); + switch_cond_next(); qsize = switch_queue_size(profile->sql_queue); } + switch_mutex_lock(profile->ireg_mutex); + while (switch_queue_trypop(profile->sql_queue, &pop) == SWITCH_STATUS_SUCCESS && pop) { + sofia_glue_actually_execute_sql(profile, SWITCH_TRUE, (char *) pop, NULL); + free(pop); + } + switch_mutex_unlock(profile->ireg_mutex); + sofia_clear_pflag_locked(profile, PFLAG_WORKER_RUNNING); return NULL;