From c8514b03829b841ea52c4fe90fbd20ff5dfe9fe2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sa=C3=BAl=20Ibarra=20Corretg=C3=A9?= Date: Thu, 13 Sep 2012 08:45:31 +0200 Subject: [PATCH] unix, windows: return error if uv_pipe_open fails --- include/uv.h | 2 +- src/unix/pipe.c | 8 ++++---- src/win/pipe.c | 6 ++++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/include/uv.h b/include/uv.h index 582e003e..3ac37a23 100644 --- a/include/uv.h +++ b/include/uv.h @@ -940,7 +940,7 @@ UV_EXTERN int uv_pipe_init(uv_loop_t*, uv_pipe_t* handle, int ipc); /* * Opens an existing file descriptor or HANDLE as a pipe. */ -UV_EXTERN void uv_pipe_open(uv_pipe_t*, uv_file file); +UV_EXTERN int uv_pipe_open(uv_pipe_t*, uv_file file); UV_EXTERN int uv_pipe_bind(uv_pipe_t* handle, const char* name); diff --git a/src/unix/pipe.c b/src/unix/pipe.c index 30809dc2..411a6563 100644 --- a/src/unix/pipe.c +++ b/src/unix/pipe.c @@ -156,10 +156,10 @@ void uv__pipe_close(uv_pipe_t* handle) { } -void uv_pipe_open(uv_pipe_t* handle, uv_file fd) { - uv__stream_open((uv_stream_t*)handle, - fd, - UV_STREAM_READABLE | UV_STREAM_WRITABLE); +int uv_pipe_open(uv_pipe_t* handle, uv_file fd) { + return uv__stream_open((uv_stream_t*)handle, + fd, + UV_STREAM_READABLE | UV_STREAM_WRITABLE); } diff --git a/src/win/pipe.c b/src/win/pipe.c index 59138224..2436b036 100644 --- a/src/win/pipe.c +++ b/src/win/pipe.c @@ -1634,12 +1634,13 @@ static void eof_timer_close_cb(uv_handle_t* handle) { } -void uv_pipe_open(uv_pipe_t* pipe, uv_file file) { +int uv_pipe_open(uv_pipe_t* pipe, uv_file file) { HANDLE os_handle = (HANDLE)_get_osfhandle(file); if (os_handle == INVALID_HANDLE_VALUE || uv_set_pipe_handle(pipe->loop, pipe, os_handle, 0) == -1) { - return; + uv__set_sys_error(pipe->loop, WSAEINVAL); + return -1; } uv_pipe_connection_init(pipe); @@ -1651,4 +1652,5 @@ void uv_pipe_open(uv_pipe_t* pipe, uv_file file) { pipe->ipc_pid = uv_parent_pid(); assert(pipe->ipc_pid != -1); } + return 0; }