diff options
Diffstat (limited to 'deps/uv/src/unix/poll.c')
-rw-r--r-- | deps/uv/src/unix/poll.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/deps/uv/src/unix/poll.c b/deps/uv/src/unix/poll.c index 0d5944b0af..4c0d478eee 100644 --- a/deps/uv/src/unix/poll.c +++ b/deps/uv/src/unix/poll.c @@ -59,7 +59,14 @@ int uv_poll_init(uv_loop_t* loop, uv_poll_t* handle, int fd) { if (err) return err; + /* If ioctl(FIONBIO) reports ENOTTY, try fcntl(F_GETFL) + fcntl(F_SETFL). + * Workaround for e.g. kqueue fds not supporting ioctls. + */ err = uv__nonblock(fd, 1); + if (err == -ENOTTY) + if (uv__nonblock == uv__nonblock_ioctl) + err = uv__nonblock_fcntl(fd, 1); + if (err) return err; |