diff options
author | Lennart Poettering <lennart@poettering.net> | 2019-07-23 10:33:39 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2019-07-23 16:08:07 +0200 |
commit | 11eae36d297a7b8767abd66b53021b47ff18b4ec (patch) | |
tree | 402326eb1ab250b531b169acadf33385960a961f /src/login/logind.c | |
parent | 290320effadc0a988524af7e88a70c064e6e602c (diff) | |
download | systemd-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.c | 11 |
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); |