From: Ivan Shapovalov Date: Wed, 9 Sep 2015 13:04:35 +0000 (+0300) Subject: systemctl: fix logind bus call error handling in halt_main() X-Git-Tag: v227~143^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=a9085ea35628fa0bfeb3b48fb53f7b823081ad09;p=thirdparty%2Fsystemd.git systemctl: fix logind bus call error handling in halt_main() Handle -EOPNOTSUPP and -EINPROGRESS like in start_special(). --- diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 22455b5475e..bde3607e216 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -3048,8 +3048,12 @@ static int start_special(sd_bus *bus, char **args) { ACTION_HIBERNATE, ACTION_HYBRID_SLEEP)) { r = reboot_with_logind(bus, a); - if (r >= 0 || IN_SET(r, -EOPNOTSUPP, -EINPROGRESS)) + if (r >= 0) return r; + if (IN_SET(r, -EOPNOTSUPP, -EINPROGRESS)) + /* requested operation is not supported or already in progress */ + return r; + /* on all other errors, try low-level operation */ } r = start_unit(bus, args); @@ -7378,6 +7382,10 @@ static int halt_main(sd_bus *bus) { r = reboot_with_logind(bus, arg_action); if (r >= 0) return r; + if (IN_SET(r, -EOPNOTSUPP, -EINPROGRESS)) + /* requested operation is not supported or already in progress */ + return r; + /* on all other errors, try low-level operation */ } log_error("Must be root.");