From dd28a7dbb9404672d850063f3e58ee8dc6debb20 Mon Sep 17 00:00:00 2001 From: Florian Forster Date: Tue, 6 Jul 2010 13:00:32 +0200 Subject: [PATCH] src/plugin.c: Check "read_loop" when returning from "pthread_cond_timedwait". Otherwise it may take up to $Interval seconds until all read threads shut down. This bug was introduced in version 4.8.4 (commit dbe1a7d). --- src/plugin.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/plugin.c b/src/plugin.c index 5ff21c66..84a5abf2 100644 --- a/src/plugin.c +++ b/src/plugin.c @@ -379,12 +379,15 @@ static void *plugin_read_thread (void __attribute__((unused)) *args) * we need to re-evaluate the condition every time * pthread_cond_timedwait returns. */ rc = 0; - while (!timeout_reached(rf->rf_next_read) && rc == 0) { + while ((read_loop != 0) + && !timeout_reached(rf->rf_next_read) + && rc == 0) + { rc = pthread_cond_timedwait (&read_cond, &read_lock, &rf->rf_next_read); } - /* Must hold `real_lock' when accessing `rf->rf_type'. */ + /* Must hold `read_lock' when accessing `rf->rf_type'. */ rf_type = rf->rf_type; pthread_mutex_unlock (&read_lock); -- 2.30.2