From: Dimitri John Ledkov Date: Tue, 11 Sep 2018 09:41:56 +0000 (+0100) Subject: systemctl: correctly proceed to immediate shutdown if scheduling fails X-Git-Tag: v240~733^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=940bec70bb29b105acefd540cd4c7b0b29571de1;p=thirdparty%2Fsystemd.git systemctl: correctly proceed to immediate shutdown if scheduling fails Actually check the return code from logind_schedule_shutdown() and proceed to immediate shutdown if that fails. Negative return codes can be returned if systemctl is compiled without logind support, or if logind otherwise failed (either too old, disabled/masked, or it is incomplete systemd-shim/systemd-service implementation). --- diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index c91363f9d73..8094a6aa9f8 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -8576,8 +8576,10 @@ static int halt_main(void) { if (r < 0) return r; - if (arg_when > 0) - return logind_schedule_shutdown(); + /* Delayed shutdown requested, and was successful */ + if (arg_when > 0 && logind_schedule_shutdown() == 0) + return 0; + /* no delay, or logind failed or is not at all available */ if (geteuid() != 0) { if (arg_dry_run || arg_force > 0) {