chiark / gitweb /
logind: make sure to terminate systemd user on logouts
authorDjalal Harouni <tixxdz@opendz.org>
Thu, 13 Feb 2014 17:31:43 +0000 (18:31 +0100)
committerLennart Poettering <lennart@poettering.net>
Thu, 13 Feb 2014 20:07:13 +0000 (21:07 +0100)
commitb58b227a53ee2b9feba8433a1558b51132ffb18b
tree018caa5b7e72dcc1a04becfd203cc11598029c2d
parent24fb111207566f3bb33c6438714fb5df44ed4305
logind: make sure to terminate systemd user on logouts

Currently if the user logs out, the GC may never call user_stop(),
this will not terminate the systemd user and (sd-pam) of that user.

To fix this, remove the USER_CLOSING state check that is blocking the
GC from calling user_stop(). Since if user_check_gc() returns false
this means that all the sessions of the user were removed which will
make user_get_state() return USER_CLOSING.

Conclusion: that test will never be statisfied.

So we remove the USER_CLOSING check and replace it with a check inside
user_stop() this way we know that user_stop() has already queued stop
jobs, no need to redo.

This ensures that the GC will get its two steps correctly as pointed out
by Lennart:
http://lists.freedesktop.org/archives/systemd-devel/2014-February/016825.html

Note: this also fixes another bug that prevents creating the user
private dbus socket which will break communications with the user
manager.
src/login/logind-user.c
src/login/logind.c