summaryrefslogtreecommitdiff
path: root/src/login/logind.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2019-07-23 10:33:39 +0200
committerLennart Poettering <lennart@poettering.net>2019-07-23 16:08:07 +0200
commit11eae36d297a7b8767abd66b53021b47ff18b4ec (patch)
tree402326eb1ab250b531b169acadf33385960a961f /src/login/logind.c
parent290320effadc0a988524af7e88a70c064e6e602c (diff)
downloadsystemd-11eae36d297a7b8767abd66b53021b47ff18b4ec.tar.gz
logind: at start-up automatically clean up orphaned inhibitors
Diffstat (limited to 'src/login/logind.c')
-rw-r--r--src/login/logind.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/login/logind.c b/src/login/logind.c
index 175db697e5..3a16e6c871 100644
--- a/src/login/logind.c
+++ b/src/login/logind.c
@@ -1145,8 +1145,15 @@ static int manager_startup(Manager *m) {
HASHMAP_FOREACH(session, m->sessions, i)
(void) session_start(session, NULL, NULL);
- HASHMAP_FOREACH(inhibitor, m->inhibitors, i)
- inhibitor_start(inhibitor);
+ HASHMAP_FOREACH(inhibitor, m->inhibitors, i) {
+ (void) inhibitor_start(inhibitor);
+
+ /* Let's see if the inhibitor is dead now, then remove it */
+ if (inhibitor_is_orphan(inhibitor)) {
+ inhibitor_stop(inhibitor);
+ inhibitor_free(inhibitor);
+ }
+ }
HASHMAP_FOREACH(button, m->buttons, i)
button_check_switches(button);