From 2889a301c32fc7cbe7acf12d8d5a559bf312a2f8 Mon Sep 17 00:00:00 2001 From: Sven Eden Date: Wed, 13 Jun 2018 18:03:08 +0200 Subject: [PATCH] login/elogind-dbus.c: Sync the following methods from systemctl.c: * manager_scheduled_shutdown_handler() --- src/login/elogind-dbus.c | 13 ++++++++++--- src/login/logind-dbus.c | 1 + 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/login/elogind-dbus.c b/src/login/elogind-dbus.c index 2bb8228f1..b07722314 100644 --- a/src/login/elogind-dbus.c +++ b/src/login/elogind-dbus.c @@ -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) { diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index e67708b30..172536d08 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -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; -- 2.30.2