execute: don't pass unit ID in --user mode to journald for stream logging
authorLennart Poettering <lennart@poettering.net>
Fri, 14 Jul 2017 16:59:41 +0000 (18:59 +0200)
committerLennart Poettering <lennart@poettering.net>
Mon, 31 Jul 2017 16:01:42 +0000 (18:01 +0200)
When we create a log stream connection to journald, we pass along the
unit ID. With this change we do this only when we run as system
instance, not as user instance, to remove the ambiguity whether a user
or system unit is specified. The effect of this change is minor:
journald ignores the field anyway from clients with UID != 0. This patch
hence only fixes the unit attribution for the --user instance of the
root user.

src/core/execute.c

index b76b9b9..7481588 100644 (file)
@@ -356,8 +356,8 @@ static int connect_logger_as(
                 "%i\n"
                 "%i\n"
                 "%i\n",
-                context->syslog_identifier ? context->syslog_identifier : ident,
-                unit->id,
+                context->syslog_identifier ?: ident,
+                MANAGER_IS_SYSTEM(unit->manager) ? unit->id : "",
                 context->syslog_priority,
                 !!context->syslog_level_prefix,
                 output == EXEC_OUTPUT_SYSLOG || output == EXEC_OUTPUT_SYSLOG_AND_CONSOLE,