mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 13:13:44 +01:00
On OSX, decline to use the built-in select-baed poll wrapper, since it seems to sometimes not work.
svn:r1114
This commit is contained in:
parent
fd4dc9de39
commit
67a273962a
@ -30,7 +30,7 @@
|
||||
#include "util.h"
|
||||
|
||||
int
|
||||
poll(struct pollfd *ufds, unsigned int nfds, int timeout)
|
||||
tor_poll(struct pollfd *ufds, unsigned int nfds, int timeout)
|
||||
{
|
||||
int idx, maxfd, fd;
|
||||
int r;
|
||||
|
@ -7,10 +7,27 @@
|
||||
|
||||
#include "orconfig.h"
|
||||
|
||||
#ifndef HAVE_POLL_H
|
||||
#ifndef HAVE_SYS_POLL_H
|
||||
#define USE_FAKE_POLL
|
||||
#define POLL_NO_WARN
|
||||
|
||||
#if defined(HAVE_POLL_H)
|
||||
#include <poll.h>
|
||||
#elif defined(HAVE_SYS_POLL_H)
|
||||
#include <sys/poll.h>
|
||||
#endif
|
||||
|
||||
/* If _POLL_EMUL_H_ is defined, then poll is just a just a thin wrapper around
|
||||
* select. On Mac OS 10.3, this wrapper is kinda flakey, 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
|
||||
#define USE_FAKE_POLL
|
||||
#endif
|
||||
|
||||
#ifdef USE_FAKE_POLL
|
||||
|
||||
#ifndef _POLL_EMUL_H_
|
||||
struct pollfd {
|
||||
int fd;
|
||||
short events;
|
||||
@ -23,9 +40,9 @@ struct pollfd {
|
||||
#define POLLERR 0x0008
|
||||
#define POLLHUP 0x0010
|
||||
#define POLLNVAL 0x0020
|
||||
#endif
|
||||
|
||||
int poll(struct pollfd *ufds, unsigned int nfds, int timeout);
|
||||
int tor_poll(struct pollfd *ufds, unsigned int nfds, int timeout);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
@ -520,7 +520,7 @@ static int do_main_loop(void) {
|
||||
timeout = prepare_for_poll();
|
||||
|
||||
/* poll until we have an event, or the second ends */
|
||||
poll_result = poll(poll_array, nfds, timeout);
|
||||
poll_result = tor_poll(poll_array, nfds, timeout);
|
||||
|
||||
/* let catch() handle things like ^c, and otherwise don't worry about it */
|
||||
if(poll_result < 0) {
|
||||
|
@ -26,13 +26,7 @@
|
||||
#include <ctype.h>
|
||||
#endif
|
||||
#include "../common/torint.h"
|
||||
#ifdef HAVE_SYS_POLL_H
|
||||
#include <sys/poll.h>
|
||||
#elif HAVE_POLL_H
|
||||
#include <poll.h>
|
||||
#else
|
||||
#include "../common/fakepoll.h"
|
||||
#endif
|
||||
#ifdef HAVE_SYS_TYPES_H
|
||||
#include <sys/types.h> /* Must be included before sys/stat.h for Ultrix */
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user