From 731a676c206bb1b48e7f736ce9f5b730252d1601 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 11 Jan 2012 03:16:24 +0100 Subject: [PATCH] systemd: reconnect to syslog as soon as the journal is fully up --- src/logs-show.c | 1 + src/manager.c | 38 +++++++++++--------------------------- src/special.h | 2 +- src/systemd/sd-journal.h | 2 -- 4 files changed, 13 insertions(+), 30 deletions(-) diff --git a/src/logs-show.c b/src/logs-show.c index cb18da2a..2fe205fe 100644 --- a/src/logs-show.c +++ b/src/logs-show.c @@ -178,6 +178,7 @@ static int output_short(sd_journal *j, unsigned line, bool show_all, bool monoto uint64_t x; time_t t; struct tm tm; + r = -ENOENT; if (realtime) diff --git a/src/manager.c b/src/manager.c index dbcd630b..54df7ebe 100644 --- a/src/manager.c +++ b/src/manager.c @@ -3129,36 +3129,20 @@ void manager_recheck_syslog(Manager *m) { if (m->running_as != MANAGER_SYSTEM) return; - if ((u = manager_get_unit(m, SPECIAL_SYSLOG_SOCKET))) { - SocketState state; - - state = SOCKET(u)->state; - - if (state != SOCKET_DEAD && - state != SOCKET_FAILED && - state != SOCKET_RUNNING) { - - /* Hmm, the socket is not set up, or is still - * listening, let's better not try to use - * it. Note that we have no problem if the - * socket is completely down, since there - * might be a foreign /dev/log socket around - * and we want to make use of that. - */ - - log_close_syslog(); - return; - } + u = manager_get_unit(m, SPECIAL_JOURNALD_SOCKET); + if (u && SOCKET(u)->state != SOCKET_RUNNING) { + log_close_syslog(); + return; } - if ((u = manager_get_unit(m, SPECIAL_SYSLOG_TARGET))) - if (TARGET(u)->state != TARGET_ACTIVE) { - log_close_syslog(); - return; - } + u = manager_get_unit(m, SPECIAL_JOURNALD_SERVICE); + if (u && SERVICE(u)->state != SERVICE_RUNNING) { + log_close_syslog(); + return; + } - /* Hmm, OK, so the socket is either fully up, or fully down, - * and the target is up, then let's make use of the socket */ + /* Hmm, OK, so the socket is fully up and the service is up + * too, then let's make use of the thing. */ log_open(); } diff --git a/src/special.h b/src/special.h index b90161c2..8185eaf6 100644 --- a/src/special.h +++ b/src/special.h @@ -71,7 +71,7 @@ #define SPECIAL_DBUS_SERVICE "dbus.service" #define SPECIAL_DBUS_SOCKET "dbus.socket" #define SPECIAL_JOURNALD_SOCKET "systemd-journald.socket" -#define SPECIAL_SYSLOG_SOCKET "syslog.socket" +#define SPECIAL_JOURNALD_SERVICE "systemd-journald.service" /* Magic init signals */ #define SPECIAL_KBREQUEST_TARGET "kbrequest.target" diff --git a/src/systemd/sd-journal.h b/src/systemd/sd-journal.h index d0cb9504..ebc63b76 100644 --- a/src/systemd/sd-journal.h +++ b/src/systemd/sd-journal.h @@ -37,8 +37,6 @@ * - handle incomplete header * * - kann NTP nicht finden? - * - in unit.c check ob syslog.socket wegen logging reconnect is kaputt - * * * - local deserializer * - http server -- 2.39.5