}
}
- while (!should_stop) {
+ while (!should_stop()) {
// Empty the queue.
vector<ClientStats> writes;
{
}
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) {