Fix 100% CPU usage when there is no access_log.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Fri, 19 Apr 2013 18:48:35 +0000 (20:48 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Fri, 19 Apr 2013 18:51:03 +0000 (20:51 +0200)
accesslog.cpp

index 3183a10..03aeec8 100644 (file)
@@ -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.