restore tty force-read hack

This portable-specific hack fixes a hang on exit for ttyful sessions
on Linux and some SysVish Unix variants. It was accidentally disabled
in commit 5c79952dfe (a precursor to the mainloop poll(2) conversion).

Spotted by John in bz3383
This commit is contained in:
Damien Miller 2022-01-22 11:38:21 +11:00
parent 68085066b6
commit e204b34337

View File

@ -1922,7 +1922,7 @@ channel_handle_rfd(struct ssh *ssh, Channel *c)
force = c->isatty && c->detach_close && c->istate != CHAN_INPUT_CLOSED;
if ((c->io_ready & SSH_CHAN_IO_RFD) == 0)
if (!force && (c->io_ready & SSH_CHAN_IO_RFD) == 0)
return 1;
errno = 0;
@ -2087,7 +2087,7 @@ channel_handle_efd_read(struct ssh *ssh, Channel *c)
force = c->isatty && c->detach_close && c->istate != CHAN_INPUT_CLOSED;
if ((c->io_ready & SSH_CHAN_IO_EFD_R) == 0)
if (!force && (c->io_ready & SSH_CHAN_IO_EFD_R) == 0)
return 1;
len = read(c->efd, buf, sizeof(buf));