From cf89e48028ed3b651f63ba624175394c3c0d8efa Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 19 Dec 2024 12:22:00 +0900 Subject: [PATCH] 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 ``` --- src/shared/ptyfwd.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/shared/ptyfwd.c b/src/shared/ptyfwd.c index ea36530041..f0b45dd918 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;