summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2017-02-28 18:27:42 +0100
committerLennart Poettering <lennart@poettering.net>2017-02-28 18:35:05 +0100
commita625def6ea3e6fb1ad78f40a9ff4454c4da79aca (patch)
treeec20e626f86241080c028e1f180940d9463bed83
parentae572acd62fe80bbcf242e02e4947900682ded16 (diff)
run: also pin unit when we we are in --pty mode
Since 95f1d6bfecde60b245fae1ab0313b550201e7880 we'll subscribe to unit signals to figure out when to disconnect the pty. But that can only work correctly if we actually subscribe to the unit's signals. Hence, explicitly pin (and thus subscribe to) the unit we just created not only in --wait mode but also in --pty mode. Or to say this differently: we need to pin the unit in the same cases as we install the signal match. 95f1d6bfecde60b245fae1ab0313b550201e7880 forgot to do that. This is relevant to make sure systemd-run works correctly in --user mode, and correctly exits when the spawned service dies. To test: systemd-run --user -t /bin/bash And then press ^D. This will hang before this change, but exit cleanly after it.
-rw-r--r--src/run/run.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/src/run/run.c b/src/run/run.c
index f8257abc93..2e6765aa18 100644
--- a/src/run/run.c
+++ b/src/run/run.c
@@ -497,7 +497,7 @@ static int transient_service_set_properties(sd_bus_message *m, char **argv, cons
if (r < 0)
return r;
- if (arg_wait) {
+ if (arg_wait || arg_pty) {
r = sd_bus_message_append(m, "(sv)", "AddRef", "b", 1);
if (r < 0)
return r;
@@ -1026,7 +1026,6 @@ static int start_transient_service(
pty_forward_set_handler(c.forward, pty_forward_handler, &c);
}
-
path = unit_dbus_path_from_name(service);
if (!path)
return log_oom();