From 86eefc0af8cc96d1f63c2f7df697b24b1f4b607b Mon Sep 17 00:00:00 2001 From: "Steinar H. Gunderson" Date: Fri, 19 Apr 2013 20:48:35 +0200 Subject: [PATCH] Fix 100% CPU usage when there is no access_log. --- accesslog.cpp | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/accesslog.cpp b/accesslog.cpp index 3183a10..03aeec8 100644 --- a/accesslog.cpp +++ b/accesslog.cpp @@ -51,23 +51,21 @@ void AccessLogThread::do_work() swap(pending_writes, writes); } - if (logfp == NULL) { - continue; - } - - // Do the actual writes. - time_t now = time(NULL); - for (size_t i = 0; i < writes.size(); ++i) { - fprintf(logfp, "%llu %s %s %d %llu %llu %llu\n", - (long long unsigned)(writes[i].connect_time), - writes[i].remote_addr.c_str(), - writes[i].stream_id.c_str(), - int(now - writes[i].connect_time), - (long long unsigned)(writes[i].bytes_sent), - (long long unsigned)(writes[i].bytes_lost), - (long long unsigned)(writes[i].num_loss_events)); + if (logfp != NULL) { + // Do the actual writes. + time_t now = time(NULL); + for (size_t i = 0; i < writes.size(); ++i) { + fprintf(logfp, "%llu %s %s %d %llu %llu %llu\n", + (long long unsigned)(writes[i].connect_time), + writes[i].remote_addr.c_str(), + writes[i].stream_id.c_str(), + int(now - writes[i].connect_time), + (long long unsigned)(writes[i].bytes_sent), + (long long unsigned)(writes[i].bytes_lost), + (long long unsigned)(writes[i].num_loss_events)); + } + fflush(logfp); } - fflush(logfp); // Wait until the stop_fd pipe is closed, one second has passed. // or a spurious signal arrives. -- 2.39.2