From: Yu Watanabe Date: Thu, 19 Dec 2024 03:22:00 +0000 (+0900) Subject: ptyfwd: reset writable/readable flag before shovel() on exit X-Git-Tag: v258-rc1~1810 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cf89e48028ed3b651f63ba624175394c3c0d8efa;p=thirdparty%2Fsystemd.git ptyfwd: reset writable/readable flag before shovel() on exit Follow-up for 12807b5a49d1fe60434d473afe11ff81a4c92306. Otherwise, if a call of shovel() disabled the flags, the subsequent calls do nothing even if there is something we need to read or write. Fixes the following error: ``` Dec 19 02:19:39 run0[5618]: Error on PTY forwarding logic: Too many levels of symbolic links ``` --- diff --git a/src/shared/ptyfwd.c b/src/shared/ptyfwd.c index ea365300419..f0b45dd918d 100644 --- a/src/shared/ptyfwd.c +++ b/src/shared/ptyfwd.c @@ -840,6 +840,13 @@ static int on_exit_event(sd_event_source *e, void *userdata) { if (drained(f)) return pty_forward_done(f, 0); + if (!f->master_hangup) + f->master_writable = f->master_readable = true; + if (!f->stdin_hangup) + f->stdin_readable = true; + if (!f->stdout_hangup) + f->stdout_writable = true; + r = shovel(f); if (r < 0) return r;