]> git.ipfire.org Git - thirdparty/systemd.git/commit - src/login/logind-dbus.c
logind: comment use of *_get_session()
authorAlan Jenkins <alan.christopher.jenkins@gmail.com>
Sun, 17 Sep 2017 14:49:12 +0000 (15:49 +0100)
committerAlan Jenkins <alan.christopher.jenkins@gmail.com>
Tue, 14 Nov 2017 18:15:33 +0000 (18:15 +0000)
commit7b33c6228ff26b0bdb8ca5acf50b758c50cc9c6d
tree5c275bb708f88ef574e89576e106ef1033b4b2ce
parent095b8833d65bcda44b02ab72cd7ae9a1bf2a2572
logind: comment use of *_get_session()

The manpages tell that such calls have quite limited meaning.  logind has
a few in the implementation of what remains of the session concept.

At the same time, logind basically exposes sd_pid_get_session() as public
API.  This is absolutely required, to retain compatability e.g. with Xorg.
But client code will work in more situations if it avoids assuming that it
runs in a session itself.

Its use inside the login session could be replaced with $XDG_SESSION_ID
(which pam_systemd sets).  I don't know whether it would be useful to
change Xorg at this point or not.  But if you were building something new,
you would think about whether you want to support running it in a systemd
service.

Comment these logind API features, acknowledging the reason they exist is
based in history.  I.e. help readers avoid drawing implications from their
existence which apply to history, but not the current general case.

Finally, searching these revealed a call to sd_pid_get_session() in
implementing some types of logind inhibitors.  So these inhibitors don't
work as intended when taken from inside a systemd user service :(.  Comment
this as well, deferring it as ticket #6852.
src/login/logind-dbus.c
src/login/logind-inhibit.c