From: Sven Eden Date: Wed, 13 Jun 2018 16:03:08 +0000 (+0200) Subject: login/elogind-dbus.c: Sync the following methods from systemctl.c: X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=2889a301c32fc7cbe7acf12d8d5a559bf312a2f8;p=elogind.git login/elogind-dbus.c: Sync the following methods from systemctl.c: * manager_scheduled_shutdown_handler() --- 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;