summaryrefslogtreecommitdiff
path: root/deps/uv/src/unix/poll.c
diff options
context:
space:
mode:
Diffstat (limited to 'deps/uv/src/unix/poll.c')
-rw-r--r--deps/uv/src/unix/poll.c7
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;