diff options
author | Saúl Ibarra Corretgé <saghul@gmail.com> | 2016-04-01 11:19:19 +0200 |
---|---|---|
committer | Saúl Ibarra Corretgé <saghul@gmail.com> | 2016-04-07 10:48:27 -0300 |
commit | c3cec1eefc9f3b55a3fb7bd623b3d921f493870d (patch) | |
tree | 8a4defa8165e15d3d2afd331f2b04c90c70d5bb6 /deps/uv/src/unix/poll.c | |
parent | 71544c5ecae20123a328e08a04b7f1587c4cdbbd (diff) | |
download | android-node-v8-c3cec1eefc9f3b55a3fb7bd623b3d921f493870d.tar.gz android-node-v8-c3cec1eefc9f3b55a3fb7bd623b3d921f493870d.tar.bz2 android-node-v8-c3cec1eefc9f3b55a3fb7bd623b3d921f493870d.zip |
deps: upgrade libuv to 1.9.0
Fixes: https://github.com/nodejs/node/issues/5737
Fixes: https://github.com/nodejs/node/issues/4643
Fixes: https://github.com/nodejs/node/issues/4291
Fixes: https://github.com/nodejs/node-v0.x-archive/issues/8960
Refs: https://github.com/nodejs/node/pull/3594
PR-URL: https://github.com/nodejs/node/pull/5994
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Johan Bergström <bugs@bergstroem.nu>
Diffstat (limited to 'deps/uv/src/unix/poll.c')
-rw-r--r-- | deps/uv/src/unix/poll.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/deps/uv/src/unix/poll.c b/deps/uv/src/unix/poll.c index 37da3b9585..e5efb17160 100644 --- a/deps/uv/src/unix/poll.c +++ b/deps/uv/src/unix/poll.c @@ -34,7 +34,7 @@ static void uv__poll_io(uv_loop_t* loop, uv__io_t* w, unsigned int events) { handle = container_of(w, uv_poll_t, io_watcher); if (events & UV__POLLERR) { - uv__io_stop(loop, w, UV__POLLIN | UV__POLLOUT); + uv__io_stop(loop, w, UV__POLLIN | UV__POLLOUT | UV__POLLRDHUP); uv__handle_stop(handle); handle->poll_cb(handle, -EBADF, 0); return; @@ -45,6 +45,8 @@ static void uv__poll_io(uv_loop_t* loop, uv__io_t* w, unsigned int events) { pevents |= UV_READABLE; if (events & UV__POLLOUT) pevents |= UV_WRITABLE; + if (events & UV__POLLRDHUP) + pevents |= UV_DISCONNECT; handle->poll_cb(handle, 0, pevents); } @@ -53,6 +55,10 @@ static void uv__poll_io(uv_loop_t* loop, uv__io_t* w, unsigned int events) { int uv_poll_init(uv_loop_t* loop, uv_poll_t* handle, int fd) { int err; + err = uv__io_check_fd(loop, fd); + if (err) + return err; + err = uv__nonblock(fd, 1); if (err) return err; @@ -71,7 +77,9 @@ int uv_poll_init_socket(uv_loop_t* loop, uv_poll_t* handle, static void uv__poll_stop(uv_poll_t* handle) { - uv__io_stop(handle->loop, &handle->io_watcher, UV__POLLIN | UV__POLLOUT); + uv__io_stop(handle->loop, + &handle->io_watcher, + UV__POLLIN | UV__POLLOUT | UV__POLLRDHUP); uv__handle_stop(handle); } @@ -86,7 +94,7 @@ int uv_poll_stop(uv_poll_t* handle) { int uv_poll_start(uv_poll_t* handle, int pevents, uv_poll_cb poll_cb) { int events; - assert((pevents & ~(UV_READABLE | UV_WRITABLE)) == 0); + assert((pevents & ~(UV_READABLE | UV_WRITABLE | UV_DISCONNECT)) == 0); assert(!(handle->flags & (UV_CLOSING | UV_CLOSED))); uv__poll_stop(handle); @@ -99,6 +107,8 @@ int uv_poll_start(uv_poll_t* handle, int pevents, uv_poll_cb poll_cb) { events |= UV__POLLIN; if (pevents & UV_WRITABLE) events |= UV__POLLOUT; + if (pevents & UV_DISCONNECT) + events |= UV__POLLRDHUP; uv__io_start(handle->loop, &handle->io_watcher, events); uv__handle_start(handle); |