chiark / gitweb /
logind: rework session shutdown logic
authorLennart Poettering <lennart@poettering.net>
Thu, 6 Feb 2014 17:32:14 +0000 (18:32 +0100)
committerLennart Poettering <lennart@poettering.net>
Fri, 7 Feb 2014 14:14:36 +0000 (15:14 +0100)
commit5f41d1f10fd97e93517b6a762b1bec247f4d1171
treea599559b6177bd9fccd01c56f74fad9b81a61851
parenta911bb9ab27ac0eb3bbf4e8b4109e5da9b88eee3
logind: rework session shutdown logic

Simplify the shutdown logic a bit:

- Keep the session FIFO around in the PAM module, even after the session
  shutdown hook has been finished. This allows logind to track precisely
  when the PAM handler goes away.

- In the ReleaseSession() call start a timer, that will stop terminate
  the session when elapsed.

- Never fiddle with the KillMode of scopes to configure whether user
  processes should be killed or not. Instead, simply leave the scope
  units around when we terminate a session whose processes should not be
  killed.

- When killing is enabled, stop the session scope on FIFO EOF or after
  the ReleaseSession() timeout. When killing is disabled, simply tell
  PID 1 to abandon the scope.

Because the scopes stay around and hence all processes are always member
of a scope, the system shutdown logic should be more robust, as the
scopes can be shutdown as part of the usual shutdown logic.
src/login/logind-dbus.c
src/login/logind-session.c
src/login/logind-session.h
src/login/logind-user.c
src/login/logind-user.h
src/login/logind.c
src/login/logind.h
src/login/pam-module.c