Skip to content
This repository has been archived by the owner on Apr 22, 2023. It is now read-only.

Commit

Permalink
Upgrade libuv to 7b87ff7c9b
Browse files Browse the repository at this point in the history
  • Loading branch information
piscisaureus committed Sep 4, 2011
1 parent 766430c commit cb1a21b
Show file tree
Hide file tree
Showing 15 changed files with 257 additions and 130 deletions.
2 changes: 1 addition & 1 deletion deps/uv/include/uv-private/uv-win.h
Expand Up @@ -73,7 +73,7 @@ RB_HEAD(uv_timer_tree_s, uv_timer_s);
uv_prepare_t* next_prepare_handle; \
uv_check_t* next_check_handle; \
uv_idle_t* next_idle_handle; \
ares_channel ares_channel; \
ares_channel ares_chan; \
int ares_active_sockets; \
uv_timer_t ares_polling_timer; \
/* Last error code */ \
Expand Down
6 changes: 3 additions & 3 deletions deps/uv/include/uv.h
Expand Up @@ -415,6 +415,8 @@ int uv_tcp_init(uv_loop_t*, uv_tcp_t* handle);

int uv_tcp_bind(uv_tcp_t* handle, struct sockaddr_in);
int uv_tcp_bind6(uv_tcp_t* handle, struct sockaddr_in6);
int uv_tcp_getsockname(uv_tcp_t* handle, struct sockaddr* name, int* namelen);
int uv_tcp_getpeername(uv_tcp_t* handle, struct sockaddr* name, int* namelen);

/*
* uv_tcp_connect, uv_tcp_connect6
Expand All @@ -436,9 +438,6 @@ struct uv_connect_s {
};


int uv_getsockname(uv_handle_t* handle, struct sockaddr* name, int* namelen);


/*
* UDP support.
*/
Expand Down Expand Up @@ -521,6 +520,7 @@ int uv_udp_bind(uv_udp_t* handle, struct sockaddr_in addr, unsigned flags);
* 0 on success, -1 on error.
*/
int uv_udp_bind6(uv_udp_t* handle, struct sockaddr_in6 addr, unsigned flags);
int uv_udp_getsockname(uv_udp_t* handle, struct sockaddr* name, int* namelen);

/*
* Send data. If the socket has not previously been bound with `uv_udp_bind`
Expand Down
21 changes: 0 additions & 21 deletions deps/uv/src/unix/core.c
Expand Up @@ -300,27 +300,6 @@ void uv__next(EV_P_ ev_idle* watcher, int revents) {
}


int uv_getsockname(uv_handle_t* handle, struct sockaddr* name, int* namelen) {
socklen_t socklen;
int saved_errno;

/* Don't clobber errno. */
saved_errno = errno;

/* sizeof(socklen_t) != sizeof(int) on some systems. */
socklen = (socklen_t)*namelen;

if (getsockname(handle->fd, name, &socklen) == -1) {
uv_err_new(handle->loop, errno);
} else {
*namelen = (int)socklen;
}

errno = saved_errno;
return 0;
}


void uv_ref(uv_loop_t* loop) {
ev_ref(loop->ev);
}
Expand Down
2 changes: 2 additions & 0 deletions deps/uv/src/unix/error.c
Expand Up @@ -30,6 +30,7 @@
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>


/* TODO Expose callback to user to handle fatal error like V8 does. */
Expand Down Expand Up @@ -79,6 +80,7 @@ static uv_err_code uv_translate_sys_error(int sys_errno) {
case ECONNREFUSED: return UV_ECONNREFUSED;
case EADDRINUSE: return UV_EADDRINUSE;
case EADDRNOTAVAIL: return UV_EADDRNOTAVAIL;
case ENOTCONN: return UV_ENOTCONN;
default: return UV_UNKNOWN;
}
}
Expand Down
1 change: 1 addition & 0 deletions deps/uv/src/unix/stream.c
Expand Up @@ -26,6 +26,7 @@
#include <errno.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <sys/uio.h>


Expand Down
74 changes: 74 additions & 0 deletions deps/uv/src/unix/tcp.c
Expand Up @@ -122,6 +122,80 @@ int uv_tcp_bind6(uv_tcp_t* tcp, struct sockaddr_in6 addr) {
}


int uv_tcp_getsockname(uv_tcp_t* handle, struct sockaddr* name,
int* namelen) {
socklen_t socklen;
int saved_errno;
int rv = 0;

/* Don't clobber errno. */
saved_errno = errno;

if (handle->delayed_error) {
uv_err_new(handle->loop, handle->delayed_error);
rv = -1;
goto out;
}

if (handle->fd < 0) {
uv_err_new(handle->loop, EINVAL);
rv = -1;
goto out;
}

/* sizeof(socklen_t) != sizeof(int) on some systems. */
socklen = (socklen_t)*namelen;

if (getsockname(handle->fd, name, &socklen) == -1) {
uv_err_new(handle->loop, errno);
rv = -1;
} else {
*namelen = (int)socklen;
}

out:
errno = saved_errno;
return rv;
}


int uv_tcp_getpeername(uv_tcp_t* handle, struct sockaddr* name,
int* namelen) {
socklen_t socklen;
int saved_errno;
int rv = 0;

/* Don't clobber errno. */
saved_errno = errno;

if (handle->delayed_error) {
uv_err_new(handle->loop, handle->delayed_error);
rv = -1;
goto out;
}

if (handle->fd < 0) {
uv_err_new(handle->loop, EINVAL);
rv = -1;
goto out;
}

/* sizeof(socklen_t) != sizeof(int) on some systems. */
socklen = (socklen_t)*namelen;

if (getpeername(handle->fd, name, &socklen) == -1) {
uv_err_new(handle->loop, errno);
rv = -1;
} else {
*namelen = (int)socklen;
}

out:
errno = saved_errno;
return rv;
}


int uv_tcp_listen(uv_tcp_t* tcp, int backlog, uv_connection_cb cb) {
int r;

Expand Down
31 changes: 31 additions & 0 deletions deps/uv/src/unix/udp.c
Expand Up @@ -460,6 +460,37 @@ int uv_udp_bind6(uv_udp_t* handle, struct sockaddr_in6 addr, unsigned flags) {
}


int uv_udp_getsockname(uv_udp_t* handle, struct sockaddr* name,
int* namelen) {
socklen_t socklen;
int saved_errno;
int rv = 0;

/* Don't clobber errno. */
saved_errno = errno;

if (handle->fd < 0) {
uv_err_new(handle->loop, EINVAL);
rv = -1;
goto out;
}

/* sizeof(socklen_t) != sizeof(int) on some systems. */
socklen = (socklen_t)*namelen;

if (getsockname(handle->fd, name, &socklen) == -1) {
uv_err_new(handle->loop, errno);
rv = -1;
} else {
*namelen = (int)socklen;
}

out:
errno = saved_errno;
return rv;
}


int uv_udp_send(uv_udp_send_t* req,
uv_udp_t* handle,
uv_buf_t bufs[],
Expand Down
14 changes: 7 additions & 7 deletions deps/uv/src/win/cares.c
Expand Up @@ -95,8 +95,8 @@ static void CALLBACK uv_ares_socksignal_tp(void* parameter,
/* periodically call ares to check for timeouts */
static void uv_ares_poll(uv_timer_t* handle, int status) {
uv_loop_t* loop = handle->loop;
if (loop->ares_channel != NULL && loop->ares_active_sockets > 0) {
ares_process_fd(loop->ares_channel, ARES_SOCKET_BAD, ARES_SOCKET_BAD);
if (loop->ares_chan != NULL && loop->ares_active_sockets > 0) {
ares_process_fd(loop->ares_chan, ARES_SOCKET_BAD, ARES_SOCKET_BAD);
}
}

Expand Down Expand Up @@ -214,7 +214,7 @@ static void uv_ares_sockstate_cb(void *data, ares_socket_t sock, int read,
/* called via uv_poll when ares completion port signaled */
void uv_process_ares_event_req(uv_loop_t* loop, uv_ares_action_t* handle,
uv_req_t* req) {
ares_process_fd(loop->ares_channel,
ares_process_fd(loop->ares_chan,
handle->read ? handle->sock : INVALID_SOCKET,
handle->write ? handle->sock : INVALID_SOCKET);

Expand Down Expand Up @@ -258,7 +258,7 @@ int uv_ares_init_options(uv_loop_t* loop,
int rc;

/* only allow single init at a time */
if (loop->ares_channel != NULL) {
if (loop->ares_chan != NULL) {
return UV_EALREADY;
}

Expand All @@ -272,7 +272,7 @@ int uv_ares_init_options(uv_loop_t* loop,

/* if success, save channel */
if (rc == ARES_SUCCESS) {
loop->ares_channel = *channelptr;
loop->ares_chan = *channelptr;
}

return rc;
Expand All @@ -282,8 +282,8 @@ int uv_ares_init_options(uv_loop_t* loop,
/* release memory */
void uv_ares_destroy(uv_loop_t* loop, ares_channel channel) {
/* only allow destroy if did init */
if (loop->ares_channel != NULL) {
if (loop->ares_chan != NULL) {
ares_destroy(channel);
loop->ares_channel = NULL;
loop->ares_chan = NULL;
}
}
2 changes: 1 addition & 1 deletion deps/uv/src/win/core.c
Expand Up @@ -62,7 +62,7 @@ static void uv_loop_init(uv_loop_t* loop) {
loop->next_idle_handle = NULL;

loop->ares_active_sockets = 0;
loop->ares_channel = NULL;
loop->ares_chan = NULL;

loop->last_error = uv_ok_;
}
Expand Down
2 changes: 2 additions & 0 deletions deps/uv/src/win/error.c
Expand Up @@ -117,6 +117,8 @@ uv_err_code uv_translate_sys_error(int sys_errno) {
case ERROR_NETWORK_UNREACHABLE: return UV_ENETUNREACH;
case WSAENETUNREACH: return UV_ENETUNREACH;
case ERROR_OUTOFMEMORY: return UV_ENOMEM;
case ERROR_NOT_CONNECTED: return UV_ENOTCONN;
case WSAENOTCONN: return UV_ENOTCONN;
case ERROR_NOT_SUPPORTED: return UV_ENOTSUP;
case ERROR_INSUFFICIENT_BUFFER: return UV_EINVAL;
case ERROR_INVALID_FLAGS: return UV_EBADF;
Expand Down
17 changes: 0 additions & 17 deletions deps/uv/src/win/handle.c
Expand Up @@ -39,23 +39,6 @@ int uv_is_active(uv_handle_t* handle) {
}


int uv_getsockname(uv_handle_t* handle, struct sockaddr* name, int* namelen) {
uv_loop_t* loop = handle->loop;

switch (handle->type) {
case UV_TCP:
return uv_tcp_getsockname(loop, (uv_tcp_t*) handle, name, namelen);

case UV_UDP:
return uv_udp_getsockname(loop, (uv_udp_t*) handle, name, namelen);

default:
uv_set_sys_error(loop, WSAENOTSOCK);
return -1;
}
}


void uv_close(uv_handle_t* handle, uv_close_cb cb) {
uv_tcp_t* tcp;
uv_pipe_t* pipe;
Expand Down
5 changes: 0 additions & 5 deletions deps/uv/src/win/internal.h
Expand Up @@ -123,8 +123,6 @@ int uv_tcp_read_start(uv_tcp_t* handle, uv_alloc_cb alloc_cb,
uv_read_cb read_cb);
int uv_tcp_write(uv_loop_t* loop, uv_write_t* req, uv_tcp_t* handle,
uv_buf_t bufs[], int bufcnt, uv_write_cb cb);
int uv_tcp_getsockname(uv_loop_t* loop, uv_tcp_t* handle,
struct sockaddr* name, int* namelen);

void uv_process_tcp_read_req(uv_loop_t* loop, uv_tcp_t* handle, uv_req_t* req);
void uv_process_tcp_write_req(uv_loop_t* loop, uv_tcp_t* handle,
Expand All @@ -140,9 +138,6 @@ void uv_tcp_endgame(uv_loop_t* loop, uv_tcp_t* handle);
/*
* UDP
*/
int uv_udp_getsockname(uv_loop_t* loop, uv_udp_t* handle,
struct sockaddr* name, int* namelen);

void uv_process_udp_recv_req(uv_loop_t* loop, uv_udp_t* handle, uv_req_t* req);
void uv_process_udp_send_req(uv_loop_t* loop, uv_udp_t* handle,
uv_udp_send_t* req);
Expand Down
41 changes: 37 additions & 4 deletions deps/uv/src/win/tcp.c
Expand Up @@ -419,6 +419,8 @@ int uv_tcp_accept(uv_tcp_t* server, uv_tcp_t* client) {
rv = -1;
} else {
uv_connection_init((uv_stream_t*) client);
/* AcceptEx() implicitly binds the accepted socket. */
client->flags |= UV_HANDLE_BOUND;
}

/* Prepare the req to pick up a new connection */
Expand Down Expand Up @@ -573,12 +575,18 @@ int uv_tcp_connect6(uv_connect_t* req, uv_tcp_t* handle,
}


int uv_tcp_getsockname(uv_loop_t* loop, uv_tcp_t* handle,
struct sockaddr* name, int* namelen) {
int uv_tcp_getsockname(uv_tcp_t* handle, struct sockaddr* name,
int* namelen) {
uv_loop_t* loop = handle->loop;
int result;

if (handle->flags & UV_HANDLE_SHUTTING) {
uv_set_sys_error(loop, WSAESHUTDOWN);
if (!(handle->flags & UV_HANDLE_BOUND)) {
uv_set_sys_error(loop, WSAEINVAL);
return -1;
}

if (handle->flags & UV_HANDLE_BIND_ERROR) {
loop->last_error = handle->bind_error;
return -1;
}

Expand All @@ -592,6 +600,31 @@ int uv_tcp_getsockname(uv_loop_t* loop, uv_tcp_t* handle,
}


int uv_tcp_getpeername(uv_tcp_t* handle, struct sockaddr* name,
int* namelen) {
uv_loop_t* loop = handle->loop;
int result;

if (!(handle->flags & UV_HANDLE_BOUND)) {
uv_set_sys_error(loop, WSAEINVAL);
return -1;
}

if (handle->flags & UV_HANDLE_BIND_ERROR) {
loop->last_error = handle->bind_error;
return -1;
}

result = getpeername(handle->socket, name, namelen);
if (result != 0) {
uv_set_sys_error(loop, WSAGetLastError());
return -1;
}

return 0;
}


int uv_tcp_write(uv_loop_t* loop, uv_write_t* req, uv_tcp_t* handle,
uv_buf_t bufs[], int bufcnt, uv_write_cb cb) {
int result;
Expand Down
10 changes: 8 additions & 2 deletions deps/uv/src/win/udp.c
Expand Up @@ -40,10 +40,16 @@ static char uv_zero_[] = "";
static unsigned int active_udp_streams = 0;


int uv_udp_getsockname(uv_loop_t* loop, uv_udp_t* handle,
struct sockaddr* name, int* namelen) {
int uv_udp_getsockname(uv_udp_t* handle, struct sockaddr* name,
int* namelen) {
uv_loop_t* loop = handle->loop;
int result;

if (!(handle->flags & UV_HANDLE_BOUND)) {
uv_set_sys_error(loop, WSAEINVAL);
return -1;
}

result = getsockname(handle->socket, name, namelen);
if (result != 0) {
uv_set_sys_error(loop, WSAGetLastError());
Expand Down

0 comments on commit cb1a21b

Please sign in to comment.