Showing with 5 additions and 6 deletions.
  1. +5 −6 src/unix/pipe.c
@@ -186,16 +186,14 @@ void uv_pipe_connect(uv_connect_t* req,
uv_strlcpy(saddr.sun_path, name, sizeof(saddr.sun_path));
saddr.sun_family = AF_UNIX;

/* We don't check for EINPROGRESS. Think about it: the socket
* is either there or not.
*/
do {
r = connect(handle->fd, (struct sockaddr*)&saddr, sizeof saddr);
}
while (r == -1 && errno == EINTR);

if (r == -1)
goto out;
if (errno != EINPROGRESS)
goto out;

if (new_sock)
if (uv__stream_open((uv_stream_t*)handle,
@@ -216,8 +214,9 @@ void uv_pipe_connect(uv_connect_t* req,
req->cb = cb;
ngx_queue_init(&req->queue);

/* Run callback on next tick. */
uv__io_feed(handle->loop, &handle->write_watcher, UV__IO_WRITE);
/* Force callback to run on next tick in case of error. */
if (err != 0)
uv__io_feed(handle->loop, &handle->write_watcher, UV__IO_WRITE);

/* Mimic the Windows pipe implementation, always
* return 0 and let the callback handle errors.