summaryrefslogtreecommitdiff
path: root/deps
diff options
context:
space:
mode:
authorTimothy J Fontaine <tjfontaine@gmail.com>2014-01-07 14:05:24 -0800
committerTimothy J Fontaine <tjfontaine@gmail.com>2014-01-07 14:05:58 -0800
commit30b3bc2f7ce122636acb780129a0d528c12f0be7 (patch)
treedd84a4f818b23db350d7177a1ede5e51539f810c /deps
parent1be93659303c89c4cae2b7974e41c8fbeb7ea108 (diff)
downloadandroid-node-v8-30b3bc2f7ce122636acb780129a0d528c12f0be7.tar.gz
android-node-v8-30b3bc2f7ce122636acb780129a0d528c12f0be7.tar.bz2
android-node-v8-30b3bc2f7ce122636acb780129a0d528c12f0be7.zip
uv: Upgrade to v0.10.22
Diffstat (limited to 'deps')
-rw-r--r--deps/uv/ChangeLog9
-rw-r--r--deps/uv/build.mk1
-rwxr-xr-xdeps/uv/checksparse.sh1
-rw-r--r--deps/uv/src/unix/kqueue.c3
-rw-r--r--deps/uv/src/version.c2
-rw-r--r--deps/uv/src/win/pipe.c7
-rw-r--r--deps/uv/test/test-ipc.c2
-rw-r--r--deps/uv/test/test-list.h2
-rw-r--r--deps/uv/test/test-pipe-server-close.c91
-rw-r--r--deps/uv/test/test-poll-close.c2
-rw-r--r--deps/uv/uv.gyp1
11 files changed, 115 insertions, 6 deletions
diff --git a/deps/uv/ChangeLog b/deps/uv/ChangeLog
index db3bc80c35..d55fd00937 100644
--- a/deps/uv/ChangeLog
+++ b/deps/uv/ChangeLog
@@ -1,4 +1,11 @@
-2013.12.19, Version 0.10.21 (Stable)
+2014.01.08, Version 0.10.22 (Stable)
+
+Changes since version 0.10.21:
+
+* windows: avoid assertion failure when pipe server is closed (Bert Belder)
+
+
+2013.12.19, Version 0.10.21 (Stable), 375ebce068555f0ca8151b562edb5f1b263022db
Changes since version 0.10.20:
diff --git a/deps/uv/build.mk b/deps/uv/build.mk
index 2de7961ee4..5077929d61 100644
--- a/deps/uv/build.mk
+++ b/deps/uv/build.mk
@@ -98,6 +98,7 @@ TESTS= \
test/test-ping-pong.o \
test/test-pipe-bind-error.o \
test/test-pipe-connect-error.o \
+ test/test-pipe-server-close.o \
test/test-platform-output.o \
test/test-poll.o \
test/test-poll-close.o \
diff --git a/deps/uv/checksparse.sh b/deps/uv/checksparse.sh
index 43c9441e23..01fac07a39 100755
--- a/deps/uv/checksparse.sh
+++ b/deps/uv/checksparse.sh
@@ -116,6 +116,7 @@ test/test-pass-always.c
test/test-ping-pong.c
test/test-pipe-bind-error.c
test/test-pipe-connect-error.c
+test/test-pipe-server-close.c
test/test-platform-output.c
test/test-poll-close.c
test/test-poll.c
diff --git a/deps/uv/src/unix/kqueue.c b/deps/uv/src/unix/kqueue.c
index a80b7d1416..dc64203452 100644
--- a/deps/uv/src/unix/kqueue.c
+++ b/deps/uv/src/unix/kqueue.c
@@ -168,11 +168,10 @@ void uv__io_poll(uv_loop_t* loop, int timeout) {
for (i = 0; i < nfds; i++) {
ev = events + i;
fd = ev->ident;
- w = loop->watchers[fd];
-
/* Skip invalidated events, see uv__platform_invalidate_fd */
if (fd == -1)
continue;
+ w = loop->watchers[fd];
if (w == NULL) {
/* File descriptor that we've stopped watching, disarm it. */
diff --git a/deps/uv/src/version.c b/deps/uv/src/version.c
index 98da565c7e..6786ec77ea 100644
--- a/deps/uv/src/version.c
+++ b/deps/uv/src/version.c
@@ -34,7 +34,7 @@
#define UV_VERSION_MAJOR 0
#define UV_VERSION_MINOR 10
-#define UV_VERSION_PATCH 21
+#define UV_VERSION_PATCH 22
#define UV_VERSION_IS_RELEASE 1
diff --git a/deps/uv/src/win/pipe.c b/deps/uv/src/win/pipe.c
index fd7418d739..cce1d99057 100644
--- a/deps/uv/src/win/pipe.c
+++ b/deps/uv/src/win/pipe.c
@@ -1480,6 +1480,13 @@ void uv_process_pipe_accept_req(uv_loop_t* loop, uv_pipe_t* handle,
assert(handle->type == UV_NAMED_PIPE);
+ if (handle->flags & UV__HANDLE_CLOSING) {
+ /* The req->pipeHandle should be freed already in uv_pipe_cleanup(). */
+ assert(req->pipeHandle == INVALID_HANDLE_VALUE);
+ DECREASE_PENDING_REQ_COUNT(handle);
+ return;
+ }
+
if (REQ_SUCCESS(req)) {
assert(req->pipeHandle != INVALID_HANDLE_VALUE);
req->next_pending = handle->pending_accepts;
diff --git a/deps/uv/test/test-ipc.c b/deps/uv/test/test-ipc.c
index 40a48b732f..ef27cc7700 100644
--- a/deps/uv/test/test-ipc.c
+++ b/deps/uv/test/test-ipc.c
@@ -439,7 +439,7 @@ static void on_tcp_child_process_read(uv_stream_t* tcp, ssize_t nread, uv_buf_t
return;
}
- printf("error recving on tcp connection: %s\n",
+ printf("error recving on tcp connection: %s\n",
uv_strerror(uv_last_error(tcp->loop)));
abort();
}
diff --git a/deps/uv/test/test-list.h b/deps/uv/test/test-list.h
index 9273262685..11fc498375 100644
--- a/deps/uv/test/test-list.h
+++ b/deps/uv/test/test-list.h
@@ -88,6 +88,7 @@ TEST_DECLARE (pipe_bind_error_inval)
TEST_DECLARE (pipe_listen_without_bind)
TEST_DECLARE (pipe_connect_bad_name)
TEST_DECLARE (pipe_connect_to_file)
+TEST_DECLARE (pipe_server_close)
TEST_DECLARE (connection_fail)
TEST_DECLARE (connection_fail_doesnt_auto_close)
TEST_DECLARE (shutdown_close_tcp)
@@ -257,6 +258,7 @@ TASK_LIST_START
TEST_ENTRY (pipe_connect_bad_name)
TEST_ENTRY (pipe_connect_to_file)
+ TEST_ENTRY (pipe_server_close)
TEST_ENTRY (tty)
TEST_ENTRY (stdio_over_pipes)
TEST_ENTRY (ipc_listen_before_write)
diff --git a/deps/uv/test/test-pipe-server-close.c b/deps/uv/test/test-pipe-server-close.c
new file mode 100644
index 0000000000..1dcdfffaf7
--- /dev/null
+++ b/deps/uv/test/test-pipe-server-close.c
@@ -0,0 +1,91 @@
+/* Copyright Joyent, Inc. and other Node contributors. All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#include "uv.h"
+#include "task.h"
+
+#include <string.h>
+#include <errno.h>
+
+
+static uv_pipe_t pipe_client;
+static uv_pipe_t pipe_server;
+static uv_connect_t connect_req;
+
+static int pipe_close_cb_called = 0;
+static int pipe_client_connect_cb_called = 0;
+
+
+static void pipe_close_cb(uv_handle_t* handle) {
+ ASSERT(handle == (uv_handle_t*) &pipe_client ||
+ handle == (uv_handle_t*) &pipe_server);
+ pipe_close_cb_called++;
+}
+
+
+static void pipe_client_connect_cb(uv_connect_t* req, int status) {
+ ASSERT(req == &connect_req);
+ ASSERT(status == 0);
+
+ pipe_client_connect_cb_called++;
+
+ uv_close((uv_handle_t*) &pipe_client, pipe_close_cb);
+ uv_close((uv_handle_t*) &pipe_server, pipe_close_cb);
+}
+
+
+static void pipe_server_connection_cb(uv_stream_t* handle, int status) {
+ /* This function *may* be called, depending on whether accept or the
+ * connection callback is called first.
+ */
+ ASSERT(status == 0);
+}
+
+
+TEST_IMPL(pipe_server_close) {
+ uv_loop_t* loop;
+ int r;
+
+ loop = uv_default_loop();
+ ASSERT(loop != NULL);
+
+ r = uv_pipe_init(loop, &pipe_server, 0);
+ ASSERT(r == 0);
+
+ r = uv_pipe_bind(&pipe_server, TEST_PIPENAME);
+ ASSERT(r == 0);
+
+ r = uv_listen((uv_stream_t*) &pipe_server, 0, pipe_server_connection_cb);
+ ASSERT(r == 0);
+
+ r = uv_pipe_init(loop, &pipe_client, 0);
+ ASSERT(r == 0);
+
+ uv_pipe_connect(&connect_req, &pipe_client, TEST_PIPENAME, pipe_client_connect_cb);
+
+ r = uv_run(loop, UV_RUN_DEFAULT);
+ ASSERT(r == 0);
+ ASSERT(pipe_client_connect_cb_called == 1);
+ ASSERT(pipe_close_cb_called == 2);
+
+ MAKE_VALGRIND_HAPPY();
+ return 0;
+}
diff --git a/deps/uv/test/test-poll-close.c b/deps/uv/test/test-poll-close.c
index 70b775f2fb..2eccddf5b0 100644
--- a/deps/uv/test/test-poll-close.c
+++ b/deps/uv/test/test-poll-close.c
@@ -59,7 +59,7 @@ TEST_IMPL(poll_close) {
uv_poll_init_socket(uv_default_loop(), &poll_handles[i], sockets[i]);
uv_poll_start(&poll_handles[i], UV_READABLE | UV_WRITABLE, NULL);
}
-
+
for (i = 0; i < NUM_SOCKETS; i++) {
uv_close((uv_handle_t*) &poll_handles[i], close_cb);
}
diff --git a/deps/uv/uv.gyp b/deps/uv/uv.gyp
index 1f3e19ada3..ea8707b790 100644
--- a/deps/uv/uv.gyp
+++ b/deps/uv/uv.gyp
@@ -318,6 +318,7 @@
'test/test-ping-pong.c',
'test/test-pipe-bind-error.c',
'test/test-pipe-connect-error.c',
+ 'test/test-pipe-server-close.c',
'test/test-platform-output.c',
'test/test-poll.c',
'test/test-poll-close.c',