logind: do TTY idle logic only for sessions marked as "tty"

Otherwise things might be weird, because background sessions might
become "idle", wich doesn#t really make much sense.

This shouldn't change much in 99% of the cases, but slightly corrects
behaviour as it ensures only "primary"/"foreground" sessions get the
idle logic, i.e. where a user exists that could actually make it
non-idle.
This commit is contained in:
Lennart Poettering
2024-01-04 15:40:27 +01:00
parent c16167ea10
commit 20604ff219
+14 -12
View File
@@ -1107,19 +1107,21 @@ int session_get_idle_hint(Session *s, dual_timestamp *t) {
return s->idle_hint;
}
/* For sessions with an explicitly configured tty, let's check its atime */
if (s->tty) {
r = get_tty_atime(s->tty, &atime);
if (r >= 0)
goto found_atime;
}
if (s->type == SESSION_TTY) {
/* For sessions with an explicitly configured tty, let's check its atime */
if (s->tty) {
r = get_tty_atime(s->tty, &atime);
if (r >= 0)
goto found_atime;
}
/* For sessions with a leader but no explicitly configured tty, let's check the controlling tty of
* the leader */
if (pidref_is_set(&s->leader)) {
r = get_process_ctty_atime(s->leader.pid, &atime);
if (r >= 0)
goto found_atime;
/* For sessions with a leader but no explicitly configured tty, let's check the controlling tty of
* the leader */
if (pidref_is_set(&s->leader)) {
r = get_process_ctty_atime(s->leader.pid, &atime);
if (r >= 0)
goto found_atime;
}
}
if (t)