From a9085ea35628fa0bfeb3b48fb53f7b823081ad09 Mon Sep 17 00:00:00 2001 From: Ivan Shapovalov Date: Wed, 9 Sep 2015 16:04:35 +0300 Subject: systemctl: fix logind bus call error handling in halt_main() Handle -EOPNOTSUPP and -EINPROGRESS like in start_special(). --- src/systemctl/systemctl.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 22455b5475..bde3607e21 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."); -- cgit v1.2.3-54-g00ecf