From afdf50d42311a7d0615853cf170afb4bd9ab3bac Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Mon, 2 Apr 2012 15:33:45 -0500 Subject: [PATCH] stop sched thread quicker on global destroy --- libs/freetdm/src/ftdm_sched.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/libs/freetdm/src/ftdm_sched.c b/libs/freetdm/src/ftdm_sched.c index c48c3e9433..e644067aad 100644 --- a/libs/freetdm/src/ftdm_sched.c +++ b/libs/freetdm/src/ftdm_sched.c @@ -119,10 +119,15 @@ static void *run_main_schedule(ftdm_thread_t *thread, void *data) /* there are no free runs, wait a bit and check again (FIXME: use ftdm_interrupt_t for this) */ ftdm_mutex_unlock(sched_globals.mutex); - ftdm_sleep(sleepms); + if (ftdm_running()) { + ftdm_sleep(sleepms); + } } for (current = sched_globals.freeruns; current; current = current->next) { + if (!ftdm_running()) { + break; + } /* first run the schedule */ ftdm_sched_run(current); @@ -142,7 +147,9 @@ static void *run_main_schedule(ftdm_thread_t *thread, void *data) ftdm_mutex_unlock(sched_globals.mutex); - ftdm_sleep(sleepms); + if (ftdm_running()) { + ftdm_sleep(sleepms); + } } ftdm_log(FTDM_LOG_NOTICE, "Main scheduling thread going out ...\n"); sched_globals.running = 0;