From: Mike Yuan Date: Mon, 22 Dec 2025 16:35:33 +0000 (+0100) Subject: ptyfwd: turn off O_NONBLOCK on output after soft reset X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=22eb3a6bd9f5d1b289ad5b5eb565dfcbbedc6d26;p=thirdparty%2Fsystemd.git ptyfwd: turn off O_NONBLOCK on output after soft reset Follow-up for 3d97db8f3c3e86b70d09444965ebfddd051df39c terminal_reset_ansi_req() would try to put terminal in nonblocking mode temporarily again, hence just avoid the back and forth and reset nonblocking as last step. --- diff --git a/src/shared/ptyfwd.c b/src/shared/ptyfwd.c index b3b2acd0fb3..2e8d77dee1c 100644 --- a/src/shared/ptyfwd.c +++ b/src/shared/ptyfwd.c @@ -131,9 +131,6 @@ static void pty_forward_disconnect(PTYForward *f) { if (f->saved_stdout) (void) tcsetattr(f->output_fd, TCSANOW, &f->saved_stdout_attr); - /* STDIN/STDOUT should not be non-blocking normally, so let's reset it */ - (void) fd_nonblock(f->output_fd, false); - if (f->last_char_set && f->last_char != '\n') { const char *s; @@ -154,6 +151,9 @@ static void pty_forward_disconnect(PTYForward *f) { terminal_reset_ansi_seq(f->output_fd); } + /* STDIN/STDOUT should not be non-blocking normally, so let's reset it */ + (void) fd_nonblock(f->output_fd, false); + if (f->close_output_fd) f->output_fd = safe_close(f->output_fd); }