From 78725e68c1934742123fef647046078307e2bbc8 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Wed, 5 Nov 2014 19:30:45 +0100 Subject: thread: Test for pending cancellation requests before poll()ing on OS X As we are now using poll(2) instead of select(2), we need the work-around from 76dc329e for poll() as well. --- src/libstrongswan/threading/thread.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/libstrongswan/threading') diff --git a/src/libstrongswan/threading/thread.h b/src/libstrongswan/threading/thread.h index 6abb83411..c6342321b 100644 --- a/src/libstrongswan/threading/thread.h +++ b/src/libstrongswan/threading/thread.h @@ -215,6 +215,26 @@ static inline int precancellable_select(int nfds, fd_set *restrict readfds, } #define select precancellable_select +#include + +/* + * The same as to select(2) applies to poll(2) + */ +static inline int precancellable_poll(struct pollfd fds[], nfds_t nfds, + int timeout) +{ + if (thread_cancelability(TRUE)) + { + thread_cancellation_point(); + } + else + { + thread_cancelability(FALSE); + } + return poll(fds, nfds, timeout); +} +#define poll precancellable_poll + #endif /* __APPLE__ */ #endif /** THREADING_THREAD_H_ @} */ -- cgit v1.2.3