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:
+14
-12
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user