1
1

connector: Check for POLLHUP on in_fd

POLLHUP needs to be checked on in_fd, which may be a pipe.
A pipe in Linux signals EOF through POLLHUP (see:
http://www.greenend.org.uk/rjk/tech/poll.html)

Without checking POLLHUP, a client could spin up indefinetely
doing ssh_event_dopoll.

Signed-off-by: Alberto Aguirre <albaguirre@gmail.com>
Reviewed-by: Andreas Schneider <asn@cryptomilk.org>
Этот коммит содержится в:
Alberto Aguirre 2018-02-26 12:30:45 -06:00 коммит произвёл Andreas Schneider
родитель d11869bdb6
Коммит 25f31760aa

Просмотреть файл

@ -370,7 +370,7 @@ static int ssh_connector_fd_cb(ssh_poll_handle p,
if (revents & POLLERR) {
ssh_connector_except(connector, fd);
} else if((revents & POLLIN) && fd == connector->in_fd) {
} else if((revents & (POLLIN|POLLHUP)) && fd == connector->in_fd) {
ssh_connector_fd_in_cb(connector);
} else if((revents & POLLOUT) && fd == connector->out_fd) {
ssh_connector_fd_out_cb(connector);