summaryrefslogtreecommitdiff
path: root/src/login/logind-action.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/login/logind-action.c')
-rw-r--r--src/login/logind-action.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/login/logind-action.c b/src/login/logind-action.c
index e1517d6ac2..a796ebe9ec 100644
--- a/src/login/logind-action.c
+++ b/src/login/logind-action.c
@@ -56,10 +56,15 @@ int manager_handle_action(
DBusError error;
int r;
InhibitWhat inhibit_operation;
- bool supported = true;
+ bool supported;
assert(m);
+ if (m->action_job || m->delayed_unit) {
+ log_debug("Action already in progress, ignoring.");
+ return -EALREADY;
+ }
+
/* If the key handling is turned off, don't do anything */
if (handle == HANDLE_IGNORE) {
log_debug("Refusing operation, as it is turned off.");
@@ -74,6 +79,8 @@ int manager_handle_action(
supported = can_sleep("disk") > 0 && can_sleep_disk("suspend") > 0;
else if (handle == HANDLE_KEXEC)
supported = access("/sbin/kexec", X_OK) >= 0;
+ else
+ supported = true;
if (!supported) {
log_warning("Requested operation not supported, ignoring.");