diff options
-rw-r--r-- | src/common/fakepoll.c | 24 | ||||
-rw-r--r-- | src/common/fakepoll.h | 9 |
2 files changed, 20 insertions, 13 deletions
diff --git a/src/common/fakepoll.c b/src/common/fakepoll.c index 1fd380fd5..bdc2831ea 100644 --- a/src/common/fakepoll.c +++ b/src/common/fakepoll.c @@ -9,8 +9,9 @@ #include "orconfig.h" #include "fakepoll.h" -#ifdef USE_FAKE_POLL +#ifdef HAVE_SYS_TYPES_H #include <sys/types.h> +#endif #ifdef HAVE_UNISTD_H #include <unistd.h> #endif @@ -27,16 +28,27 @@ #include <winsock.h> #endif -/* by default, windows handles only 64 fd's */ -#if defined(MS_WINDOWS) && !defined(FD_SETSIZE) -#define FD_SETSIZE MAXCONNECTIONS -#endif - #include <assert.h> #include <stdlib.h> #include "util.h" #include "log.h" +#ifndef USE_FAKE_POLL +int +tor_poll(struct pollfd *ufds, unsigned int nfds, int timeout) +{ + int i; + for (i=0;i<nfds;++i) { + tor_assert(ufds[i].fd >= 0); + } + return poll(ufds,nfds,timeout); +} +#else +/* by default, windows handles only 64 fd's */ +#if defined(MS_WINDOWS) && !defined(FD_SETSIZE) +#define FD_SETSIZE MAXCONNECTIONS +#endif + int tor_poll(struct pollfd *ufds, unsigned int nfds, int timeout) { diff --git a/src/common/fakepoll.h b/src/common/fakepoll.h index 4d0d9ce52..783aff0c4 100644 --- a/src/common/fakepoll.h +++ b/src/common/fakepoll.h @@ -19,15 +19,11 @@ * select. On Mac OS 10.3, this wrapper is kinda flaky, and we should * use our own. */ -#if (defined(HAVE_POLL_H)||defined(HAVE_SYS_POLL_H)) && !defined(_POLL_EMUL_H_) -#define tor_poll poll -#else +#if !(defined(HAVE_POLL_H)||defined(HAVE_SYS_POLL_H))&&!defined(_POLL_EMUL_H_) #define USE_FAKE_POLL #endif -#ifdef USE_FAKE_POLL - -#ifndef _POLL_EMUL_H_ +#if defined USE_FAKE_POLL && !defined(_POLL_EMUL_H_) struct pollfd { int fd; short events; @@ -43,7 +39,6 @@ struct pollfd { #endif int tor_poll(struct pollfd *ufds, unsigned int nfds, int timeout); -#endif #endif |