]> git.sesse.net Git - cubemap/blobdiff - accesslog.cpp
Refer to streams internally mostly by an index, not the stream_id.
[cubemap] / accesslog.cpp
index 03aeec8a51fb284884410418c1c9eef901cfd725..410b3b6e1b92b655530f2de415653916ddde54f0 100644 (file)
@@ -43,7 +43,7 @@ void AccessLogThread::do_work()
                }
        }
 
-       while (!should_stop) {
+       while (!should_stop()) {
                // Empty the queue.
                vector<ClientStats> writes;
                {
@@ -58,7 +58,7 @@ void AccessLogThread::do_work()
                                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(),
+                                       writes[i].url.c_str(),
                                        int(now - writes[i].connect_time),
                                        (long long unsigned)(writes[i].bytes_sent),
                                        (long long unsigned)(writes[i].bytes_lost),
@@ -66,26 +66,10 @@ void AccessLogThread::do_work()
                        }
                        fflush(logfp);
                }
-               
-               // Wait until the stop_fd pipe is closed, one second has passed.
-               // or a spurious signal arrives.
-               pollfd pfd;
-               pfd.fd = stop_fd_read;
-               pfd.events = POLLIN | POLLRDHUP;
 
-               int nfds = poll(&pfd, 1, 1000);
-               if (nfds == 0 || (nfds == -1 && errno == EINTR)) {
-                       continue;
-               }
-               if (nfds == 1) {
-                       // Should stop.
-                       break;
-               }
-               if (nfds == -1) {
-                       log_perror("poll");
-                       usleep(100000);
-                       continue;
-               }
+               // Wait until we are being woken up, either to quit or because
+               // there is material in pending_writes.
+               wait_for_wakeup(NULL);
        }
 
        if (logfp != NULL) {