diff options
author | Daniel Mack <github@zonque.org> | 2016-01-08 09:25:21 +0100 |
---|---|---|
committer | Daniel Mack <github@zonque.org> | 2016-01-08 09:25:21 +0100 |
commit | cf6c8c46fceac83dfb3f2d55fae5220e60841553 (patch) | |
tree | b7aaffde1c03df02a80c35ba41bc8e51c59d759b | |
parent | e056af1807d8c8d0c84509cfb87e2a1210c3d77f (diff) | |
parent | 11bb5147b31c737e447166ba75d79f622ca120ca (diff) |
Merge pull request #2287 from dandedrick/journal-gatewayd-timeout-fix
journal-gatewayd: timeout journal wait to allow thread cleanup
-rw-r--r-- | src/journal-remote/journal-gatewayd.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/journal-remote/journal-gatewayd.c b/src/journal-remote/journal-gatewayd.c index 006791a542..4e96fb0a4d 100644 --- a/src/journal-remote/journal-gatewayd.c +++ b/src/journal-remote/journal-gatewayd.c @@ -45,6 +45,8 @@ #include "sigbus.h" #include "util.h" +#define JOURNAL_WAIT_TIMEOUT (10*USEC_PER_SEC) + static char *arg_key_pem = NULL; static char *arg_cert_pem = NULL; static char *arg_trust_pem = NULL; @@ -181,11 +183,13 @@ static ssize_t request_reader_entries( } else if (r == 0) { if (m->follow) { - r = sd_journal_wait(m->journal, (uint64_t) -1); + r = sd_journal_wait(m->journal, (uint64_t) JOURNAL_WAIT_TIMEOUT); if (r < 0) { log_error_errno(r, "Couldn't wait for journal event: %m"); return MHD_CONTENT_READER_END_WITH_ERROR; } + if (r == SD_JOURNAL_NOP) + break; continue; } @@ -241,6 +245,8 @@ static ssize_t request_reader_entries( } n = m->size - pos; + if (n < 1) + return 0; if (n > max) n = max; |