From 940bec70bb29b105acefd540cd4c7b0b29571de1 Mon Sep 17 00:00:00 2001 From: Dimitri John Ledkov Date: Tue, 11 Sep 2018 10:41:56 +0100 Subject: [PATCH] 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). --- src/systemctl/systemctl.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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) { -- 2.47.3