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).
This commit is contained in:
Dimitri John Ledkov 2018-09-11 10:41:56 +01:00
parent cf9cda441a
commit 940bec70bb
1 changed files with 4 additions and 2 deletions

View File

@ -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) {