From: Lennart Poettering Date: Wed, 29 Nov 2023 10:09:20 +0000 (+0100) Subject: logind: do TTY idle logic only for sessions marked as "tty" X-Git-Tag: v256-rc1~1298 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=20604ff219cf4027f4ee9ca9ba7c0b9e72aec448;p=thirdparty%2Fsystemd.git 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. --- diff --git a/src/login/logind-session.c b/src/login/logind-session.c index cdd299e0064..c49a43133c1 100644 --- a/src/login/logind-session.c +++ b/src/login/logind-session.c @@ -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)