]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
run: don't wait for start job to complete when running interactively anyway
authorLennart Poettering <lennart@poettering.net>
Wed, 22 Apr 2020 18:08:34 +0000 (20:08 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 23 Apr 2020 07:47:20 +0000 (09:47 +0200)
Otherwise we'd not read the services input while waiting for the job to
wait, and there's no point in waiting for the job anyway if we wait for
the unit to stop ultimately.

Fixes: #15395
src/run/run.c

index 6076eabe92e2db614ae525b539876e3da6d6b3f9..ea49d5dab558720ac07438ba3ec14b56f8ee5f29 100644 (file)
@@ -1144,7 +1144,11 @@ static int start_transient_service(
                         assert_not_reached("Can't allocate tty via ssh");
         }
 
-        if (!arg_no_block) {
+        /* Optionally, wait for the start job to complete. If we are supposed to read the service's stdin
+         * lets skip this however, because we should start that already when the start job is running, and
+         * there's little point in waiting for the start job to complete in that case anyway, as we'll wait
+         * for EOF anyway, which is going to be much later. */
+        if (!arg_no_block && arg_stdio == ARG_STDIO_NONE) {
                 r = bus_wait_for_jobs_new(bus, &w);
                 if (r < 0)
                         return log_error_errno(r, "Could not watch jobs: %m");