From de54a88ee1b2eec67b064417d8b79774e7cd69a6 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Mon, 10 Dec 2018 09:25:33 +0100 Subject: [PATCH] poll: Return early for timeout and count every revent Signed-off-by: Andreas Schneider --- src/poll.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/poll.c b/src/poll.c index 01eb42d5..41231402 100644 --- a/src/poll.c +++ b/src/poll.c @@ -286,6 +286,10 @@ static int bsd_poll(ssh_pollfd_t *fds, nfds_t nfds, int timeout) if (rc < 0) { return -1; } + /* A timeout occured */ + if (rc == 0) { + return 0; + } for (rc = 0, i = 0; i < nfds; i++) { if (fds[i].fd >= 0) { @@ -303,7 +307,7 @@ static int bsd_poll(ssh_pollfd_t *fds, nfds_t nfds, int timeout) fds[i].revents |= fds[i].events & (POLLPRI | POLLRDBAND); } - if (fds[i].revents & ~POLLHUP) { + if (fds[i].revents != 0) { rc++; } } else {