chiark / gitweb /
login/elogind-dbus.c: Sync the following methods from systemctl.c:
authorSven Eden <yamakuzure@gmx.net>
Wed, 13 Jun 2018 16:03:08 +0000 (18:03 +0200)
committerSven Eden <yamakuzure@gmx.net>
Fri, 29 Jun 2018 05:12:51 +0000 (07:12 +0200)
 * manager_scheduled_shutdown_handler()

src/login/elogind-dbus.c
src/login/logind-dbus.c

index 2bb8228f12180d25cc946fd1820981a34b1f2747..b0772231403413d86b1e2b82600014a313d849f1 100644 (file)
@@ -437,9 +437,10 @@ int manager_scheduled_shutdown_handler(
 
         /* Don't allow multiple jobs being executed at the same time */
         if (m->action_what) {
+                r = -EALREADY;
                 log_error("Scheduled shutdown to %s failed: shutdown or sleep operation already in progress",
                           m->scheduled_shutdown_type);
-                return -EALREADY;
+                goto error;
         }
 
         if (m->shutdown_dry_run) {
@@ -456,11 +457,17 @@ int manager_scheduled_shutdown_handler(
         }
 
         r = execute_shutdown_or_sleep(m, 0, action, &error);
-        if (r < 0)
-                return log_error_errno(r, "Scheduled shutdown to %s failed: %m",
+        if (r < 0) {
+                log_error_errno(r, "Scheduled shutdown to %s failed: %m",
                                        m->scheduled_shutdown_type);
+                goto error;
+        }
 
         return 0;
+
+error:
+        reset_scheduled_shutdown(m);
+        return r;
 }
 
 int method_hibernate(sd_bus_message *message, void *userdata, sd_bus_error *error) {
index e67708b300eec082bb47663556468b15e88f6fb1..172536d084720d63c5abdcc4bb2dd2b2d0426b00 100644 (file)
@@ -54,6 +54,7 @@
 
 /// Additional includes needed by elogind
 #include "elogind-dbus.h"
+
 static int get_sender_session(Manager *m, sd_bus_message *message, sd_bus_error *error, Session **ret) {
 
         _cleanup_(sd_bus_creds_unrefp) sd_bus_creds *creds = NULL;