diff options
author | Andreas Schneider <asn@cynapses.org> | 2010-06-17 11:16:24 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cynapses.org> | 2010-06-17 11:16:24 +0200 |
commit | c30a25e64c8318ed77e30a31fda0d9157caeafaf (patch) | |
tree | d6ebece90d75da2226d45854fd56fe0b4f37ea82 | |
parent | b9a9f54c452aeb9083398a956bd590c37661f489 (diff) | |
download | libssh-c30a25e64c8318ed77e30a31fda0d9157caeafaf.tar.gz libssh-c30a25e64c8318ed77e30a31fda0d9157caeafaf.tar.xz libssh-c30a25e64c8318ed77e30a31fda0d9157caeafaf.zip |
poll: Fixed a malfunction with wrong max fd value check.
-rw-r--r-- | include/libssh/libssh.h | 8 | ||||
-rw-r--r-- | libssh/poll.c | 4 |
2 files changed, 8 insertions, 4 deletions
diff --git a/include/libssh/libssh.h b/include/libssh/libssh.h index 4100f03f..cf1c9d67 100644 --- a/include/libssh/libssh.h +++ b/include/libssh/libssh.h @@ -120,10 +120,14 @@ typedef struct ssh_string_struct* ssh_string; /* Socket type */ #ifdef _WIN32 -#define socket_t SOCKET -#else +#ifndef socket_t +typedef SOCKET socket_t; +#endif /* socket_t */ +#else /* _WIN32 */ +#ifndef socket_t typedef int socket_t; #endif +#endif /* _WIN32 */ /* the offsets of methods */ enum ssh_kex_types_e { diff --git a/libssh/poll.c b/libssh/poll.c index 5eb80aaa..f6a81749 100644 --- a/libssh/poll.c +++ b/libssh/poll.c @@ -135,7 +135,7 @@ static int bsd_poll(ssh_pollfd_t *fds, nfds_t nfds, int timeout) { FD_ZERO (&exceptfds); /* compute fd_sets and find largest descriptor */ - for (max_fd = -1, i = 0; i < nfds; i++) { + for (max_fd = 0, i = 0; i < nfds; i++) { if (fds[i].fd < 0) { continue; } @@ -157,7 +157,7 @@ static int bsd_poll(ssh_pollfd_t *fds, nfds_t nfds, int timeout) { } } - if (max_fd == -1) { + if (max_fd == (socket_t) -1) { errno = EINVAL; return -1; } |