From 26596dbe157bf71e380b3c57f5371c5483902a2f Mon Sep 17 00:00:00 2001 From: Mark Whitehorn Date: Mon, 2 May 2016 09:28:15 -0600 Subject: [PATCH] fix infinite loop when not logging --- src/modules/logger/log_writer.cpp | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/src/modules/logger/log_writer.cpp b/src/modules/logger/log_writer.cpp index f7763a8dfc..5c96a9518a 100644 --- a/src/modules/logger/log_writer.cpp +++ b/src/modules/logger/log_writer.cpp @@ -103,21 +103,20 @@ void *LogWriter::run_helper(void *context) void LogWriter::run() { - // Wait for _should_run flag - while (!_exit_thread) { - bool start = false; - pthread_mutex_lock(&_mtx); - pthread_cond_wait(&_cv, &_mtx); - start = _should_run; - pthread_mutex_unlock(&_mtx); - - if (start) { - break; - } - } - while (!_exit_thread) { // Outer endless loop + // Wait for _should_run flag + while (!_exit_thread) { + bool start = false; + pthread_mutex_lock(&_mtx); + pthread_cond_wait(&_cv, &_mtx); + start = _should_run; + pthread_mutex_unlock(&_mtx); + + if (start) { + break; + } + } int poll_count = 0; int written = 0; @@ -196,7 +195,6 @@ void LogWriter::run() break; } } - } }