chiark / gitweb /
logind: handle closing sessions over daemon restarts
authorMartin Pitt <martin.pitt@ubuntu.com>
Wed, 28 Jan 2015 17:14:01 +0000 (18:14 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 28 Jan 2015 19:03:38 +0000 (20:03 +0100)
commitbe94d95499bf9c63fe9331e9b9ecc64f32fe9d79
tree232e19a8e3db2d63b301b40627c906c55d3c3767
parent40672b99c7da7efd317fc31612504fe7d5ab0b65
logind: handle closing sessions over daemon restarts

It may happen that you have several sessions with the same VT:

 - Open a session c1 which leaves some processes around, and log out. The
   session will stay in State=closing and become Active=no.
 - Log back in on the same VT, get a new session "c2" which is State=active and
   Active=yes.

When restarting logind after that, the first session that matches the current
VT becomes Active=yes, which will be c1; c2 thus is Active=no and does not get
the usual polkit/device ACL privileges.

Restore the "closing" state in session_load(), to avoid treating all restored
sessions as State=active. In seat_active_vt_changed(), prefer active sessions
over closing ones if more than one session matches the current VT.

Finally, fix the confusing comment in session_load() and explain it a bit
better.

https://launchpad.net/bugs/1415104
src/login/logind-seat.c
src/login/logind-session.c