X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fjournal%2Fjournald-server.c;h=5999724edc17d12b4a0d6dee6b8290cee6a8ecbd;hb=a2341f6836da0a217ab0c5f2b82f0c4ea13d429d;hp=c28aba8fd00039f36a20eb24e90c5f0d2c631f95;hpb=2678031a179a9b91fc799f8ef951a548c66c4b49;p=elogind.git diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index c28aba8fd..5999724ed 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -521,12 +521,7 @@ static void write_to_journal(Server *s, uid_t uid, struct iovec *iovec, unsigned } if (vacuumed || !shall_try_append_again(f, r)) { - size_t size = 0; - unsigned i; - for (i = 0; i < n; i++) - size += iovec[i].iov_len; - - log_error_errno(r, "Failed to write entry (%d items, %zu bytes), ignoring: %m", n, size); + log_error_errno(r, "Failed to write entry (%d items, %zu bytes), ignoring: %m", n, IOVEC_TOTAL_SIZE(iovec, n)); return; } @@ -539,14 +534,9 @@ static void write_to_journal(Server *s, uid_t uid, struct iovec *iovec, unsigned log_debug("Retrying write."); r = journal_file_append_entry(f, NULL, iovec, n, &s->seqnum, NULL, NULL); - if (r < 0) { - size_t size = 0; - unsigned i; - for (i = 0; i < n; i++) - size += iovec[i].iov_len; - - log_error_errno(r, "Failed to write entry (%d items, %zu bytes) despite vacuuming, ignoring: %m", n, size); - } else + if (r < 0) + log_error_errno(r, "Failed to write entry (%d items, %zu bytes) despite vacuuming, ignoring: %m", n, IOVEC_TOTAL_SIZE(iovec, n)); + else server_schedule_sync(s, priority); } @@ -1472,6 +1462,7 @@ static int server_open_hostname(Server *s) { } int server_init(Server *s) { + _cleanup_fdset_free_ FDSet *fds = NULL; int n, r, fd; assert(s); @@ -1568,26 +1559,33 @@ int server_init(Server *s) { s->audit_fd = fd; } else { - log_warning("Unknown socket passed as file descriptor %d, ignoring.", fd); - /* Let's close the fd, better be safe than - sorry. The fd might reference some resource - that we really want to release if we don't - make use of it. */ + if (!fds) { + fds = fdset_new(); + if (!fds) + return log_oom(); + } - safe_close(fd); + r = fdset_put(fds, fd); + if (r < 0) + return log_oom(); } } - r = server_open_syslog_socket(s); + r = server_open_stdout_socket(s, fds); if (r < 0) return r; - r = server_open_native_socket(s); + if (fdset_size(fds) > 0) { + log_warning("%u unknown file descriptors passed, closing.", fdset_size(fds)); + fds = fdset_free(fds); + } + + r = server_open_syslog_socket(s); if (r < 0) return r; - r = server_open_stdout_socket(s); + r = server_open_native_socket(s); if (r < 0) return r;