summaryrefslogtreecommitdiff
path: root/src/login/logind-user.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2014-03-14 01:38:19 +0100
committerLennart Poettering <lennart@poettering.net>2014-03-14 01:49:44 +0100
commit66cdd0f2d0670b054bd27dad16fcb5838b11dde3 (patch)
treeaacbe786c7403a6f4f0782b4d6403d0f961b1d9c /src/login/logind-user.c
parentbcdbbd7ee1b7dc6ec19261c957ed11e5e1ed1aaf (diff)
logind: automatically remove SysV + POSIX IPC objects when the users owning them fully log out
Diffstat (limited to 'src/login/logind-user.c')
-rw-r--r--src/login/logind-user.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/login/logind-user.c b/src/login/logind-user.c
index 9bbe87957..961cbcb27 100644
--- a/src/login/logind-user.c
+++ b/src/login/logind-user.c
@@ -35,6 +35,7 @@
#include "bus-util.h"
#include "bus-error.h"
#include "conf-parser.h"
+#include "clean-ipc.h"
#include "logind-user.h"
User* user_new(Manager *m, uid_t uid, gid_t gid, const char *name) {
@@ -572,6 +573,13 @@ int user_finalize(User *u) {
if (k < 0)
r = k;
+ /* Clean SysV + POSIX IPC objects */
+ if (u->manager->remove_ipc) {
+ k = clean_ipc(u->uid);
+ if (k < 0)
+ r = k;
+ }
+
unlink(u->state_file);
user_add_to_gc_queue(u);