Browse Source

deps: upgrade libuv to 4d42af2

v0.8.7-release
Ben Noordhuis 13 years ago
parent
commit
1e50282ae8
  1. 3
      deps/uv/include/uv.h
  2. 1
      deps/uv/src/unix/error.c
  3. 71
      deps/uv/src/unix/stream.c
  4. 8
      deps/uv/src/unix/sunos.c
  5. 1
      deps/uv/src/win/error.c
  6. 4
      deps/uv/test/test-fs.c

3
deps/uv/include/uv.h

@ -126,7 +126,8 @@ extern "C" {
XX( 53, ENOTEMPTY, "directory not empty") \ XX( 53, ENOTEMPTY, "directory not empty") \
XX( 54, ENOSPC, "no space left on device") \ XX( 54, ENOSPC, "no space left on device") \
XX( 55, EIO, "i/o error") \ XX( 55, EIO, "i/o error") \
XX( 56, EROFS, "read-only file system" ) XX( 56, EROFS, "read-only file system" ) \
XX( 57, ENODEV, "no such device" )
#define UV_ERRNO_GEN(val, name, s) UV_##name = val, #define UV_ERRNO_GEN(val, name, s) UV_##name = val,

1
deps/uv/src/unix/error.c

@ -86,6 +86,7 @@ uv_err_code uv_translate_sys_error(int sys_errno) {
case EADDRNOTAVAIL: return UV_EADDRNOTAVAIL; case EADDRNOTAVAIL: return UV_EADDRNOTAVAIL;
case ENOTDIR: return UV_ENOTDIR; case ENOTDIR: return UV_ENOTDIR;
case EISDIR: return UV_EISDIR; case EISDIR: return UV_EISDIR;
case ENODEV: return UV_ENODEV;
case ENOTCONN: return UV_ENOTCONN; case ENOTCONN: return UV_ENOTCONN;
case EEXIST: return UV_EEXIST; case EEXIST: return UV_EEXIST;
case EHOSTUNREACH: return UV_EHOSTUNREACH; case EHOSTUNREACH: return UV_EHOSTUNREACH;

71
deps/uv/src/unix/stream.c

@ -802,62 +802,51 @@ int uv__connect(uv_connect_t* req, uv_stream_t* stream, struct sockaddr* addr,
int sockfd; int sockfd;
int r; int r;
if (stream->type != UV_TCP)
return uv__set_sys_error(stream->loop, ENOTSOCK);
if (stream->connect_req)
return uv__set_sys_error(stream->loop, EALREADY);
if (stream->fd <= 0) { if (stream->fd <= 0) {
if ((sockfd = uv__socket(addr->sa_family, SOCK_STREAM, 0)) == -1) { sockfd = uv__socket(addr->sa_family, SOCK_STREAM, 0);
uv__set_sys_error(stream->loop, errno);
return -1; if (sockfd == -1)
} return uv__set_sys_error(stream->loop, errno);
if (uv__stream_open(stream, if (uv__stream_open(stream,
sockfd, sockfd,
UV_STREAM_READABLE | UV_STREAM_WRITABLE)) { UV_STREAM_READABLE | UV_STREAM_WRITABLE)) {
close(sockfd); close(sockfd);
return -2; return -1;
} }
} }
uv__req_init(stream->loop, req, UV_CONNECT); stream->delayed_error = 0;
req->cb = cb;
req->handle = stream;
ngx_queue_init(&req->queue);
if (stream->connect_req) {
uv__set_sys_error(stream->loop, EALREADY);
return -1;
}
if (stream->type != UV_TCP) {
uv__set_sys_error(stream->loop, ENOTSOCK);
return -1;
}
stream->connect_req = req;
do { do
r = connect(stream->fd, addr, addrlen); r = connect(stream->fd, addr, addrlen);
}
while (r == -1 && errno == EINTR); while (r == -1 && errno == EINTR);
stream->delayed_error = 0; if (r == -1) {
if (errno == EINPROGRESS)
if (r != 0 && errno != EINPROGRESS) { ; /* not an error */
switch (errno) { else if (errno == ECONNREFUSED)
/* If we get a ECONNREFUSED wait until the next tick to report the /* If we get a ECONNREFUSED wait until the next tick to report the
* error. Solaris wants to report immediately--other unixes want to * error. Solaris wants to report immediately--other unixes want to
* wait. * wait.
* */
* XXX: do the same for ECONNABORTED? stream->delayed_error = errno;
*/ else
case ECONNREFUSED: return uv__set_sys_error(stream->loop, errno);
stream->delayed_error = errno;
break;
default:
uv__set_sys_error(stream->loop, errno);
return -1;
}
} }
uv__req_init(stream->loop, req, UV_CONNECT);
req->cb = cb;
req->handle = stream;
ngx_queue_init(&req->queue);
stream->connect_req = req;
uv__io_start(stream->loop, &stream->write_watcher); uv__io_start(stream->loop, &stream->write_watcher);
if (stream->delayed_error) if (stream->delayed_error)

8
deps/uv/src/unix/sunos.c

@ -332,14 +332,6 @@ uv_err_t uv_cpu_info(uv_cpu_info_t** cpu_infos, int* count) {
lookup_instance = 0; lookup_instance = 0;
while ((ksp = kstat_lookup(kc, (char *)"cpu_info", lookup_instance, NULL))) { while ((ksp = kstat_lookup(kc, (char *)"cpu_info", lookup_instance, NULL))) {
if (kstat_read(kc, ksp, NULL) == -1) { if (kstat_read(kc, ksp, NULL) == -1) {
/*
* It is deeply annoying, but some kstats can return errors
* under otherwise routine conditions. (ACPI is one
* offender; there are surely others.) To prevent these
* fouled kstats from completely ruining our day, we assign
* an "error" member to the return value that consists of
* the strerror().
*/
cpu_info->speed = 0; cpu_info->speed = 0;
cpu_info->model = NULL; cpu_info->model = NULL;
} else { } else {

1
deps/uv/src/win/error.c

@ -86,6 +86,7 @@ uv_err_code uv_translate_sys_error(int sys_errno) {
case ERROR_MOD_NOT_FOUND: return UV_ENOENT; case ERROR_MOD_NOT_FOUND: return UV_ENOENT;
case ERROR_PATH_NOT_FOUND: return UV_ENOENT; case ERROR_PATH_NOT_FOUND: return UV_ENOENT;
case ERROR_ACCESS_DENIED: return UV_EPERM; case ERROR_ACCESS_DENIED: return UV_EPERM;
case ERROR_PRIVILEGE_NOT_HELD: return UV_EPERM;
case ERROR_NOACCESS: return UV_EACCES; case ERROR_NOACCESS: return UV_EACCES;
case WSAEACCES: return UV_EACCES; case WSAEACCES: return UV_EACCES;
case ERROR_ADDRESS_ALREADY_ASSOCIATED: return UV_EADDRINUSE; case ERROR_ADDRESS_ALREADY_ASSOCIATED: return UV_EADDRINUSE;

4
deps/uv/test/test-fs.c

@ -1224,10 +1224,10 @@ TEST_IMPL(fs_symlink) {
* We just pass the test and bail out early if we get ENOTSUP. * We just pass the test and bail out early if we get ENOTSUP.
*/ */
return 0; return 0;
} else if (uv_last_error(loop).sys_errno_ == ERROR_PRIVILEGE_NOT_HELD) { } else if (uv_last_error(loop).code == UV_EPERM) {
/* /*
* Creating a symlink is only allowed when running elevated. * Creating a symlink is only allowed when running elevated.
* We pass the test and bail out early if we get ERROR_PRIVILEGE_NOT_HELD. * We pass the test and bail out early if we get UV_EPERM.
*/ */
return 0; return 0;
} }

Loading…
Cancel
Save