run: also pin unit when we we are in --pty mode
Since95f1d6bfec
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.95f1d6bfec
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.
This commit is contained in:
parent
ae572acd62
commit
a625def6ea
|
@ -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();
|
||||
|
|
Loading…
Reference in a new issue