]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
log: only open kmsg on fallback if we actually want to use it
authorLennart Poettering <lennart@poettering.net>
Wed, 21 Feb 2018 23:31:36 +0000 (00:31 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 21 Feb 2018 23:31:36 +0000 (00:31 +0100)
Previously, we'd try to open kmsg on failure of the journal/syslog even
if no automatic fallback to kmsg was requested — and we wouldn't even
use the open connection afterwards...

src/basic/log.c

index b3751299d06b349c6cb960d9f39257300dca336d..88aea4e1da828b59d5f6b5e4c20a9f57de6a2e29 100644 (file)
@@ -613,22 +613,16 @@ int log_dispatch_internal(
                                        LOG_TARGET_JOURNAL)) {
 
                         k = write_to_journal(level, error, file, line, func, object_field, object, extra_field, extra, buffer);
-                        if (k < 0) {
-                                if (k != -EAGAIN)
-                                        log_close_journal();
-                                log_open_kmsg();
-                        }
+                        if (k < 0 && k != -EAGAIN)
+                                log_close_journal();
                 }
 
                 if (IN_SET(log_target, LOG_TARGET_SYSLOG_OR_KMSG,
                                        LOG_TARGET_SYSLOG)) {
 
                         k = write_to_syslog(level, error, file, line, func, buffer);
-                        if (k < 0) {
-                                if (k != -EAGAIN)
-                                        log_close_syslog();
-                                log_open_kmsg();
-                        }
+                        if (k < 0 && k != -EAGAIN)
+                                log_close_syslog();
                 }
 
                 if (k <= 0 &&
@@ -637,6 +631,9 @@ int log_dispatch_internal(
                                        LOG_TARGET_JOURNAL_OR_KMSG,
                                        LOG_TARGET_KMSG)) {
 
+                        if (k < 0)
+                                log_open_kmsg();
+
                         k = write_to_kmsg(level, error, file, line, func, buffer);
                         if (k < 0) {
                                 log_close_kmsg();