aboutsummaryrefslogtreecommitdiff
path: root/deps/uv/src/uv-common.c
diff options
context:
space:
mode:
authorBen Noordhuis <info@bnoordhuis.nl>2013-09-03 00:42:59 +0200
committerBen Noordhuis <info@bnoordhuis.nl>2013-09-03 01:17:58 +0200
commited8d97f572fab15025da0c762e5edfbcbe45f425 (patch)
treeca92b0ac08b5ebc14848883e4cba4e1edc9dd46b /deps/uv/src/uv-common.c
parent185c515c9febf2229ed2ac76bfdd0c767ea7fd43 (diff)
downloadandroid-node-v8-ed8d97f572fab15025da0c762e5edfbcbe45f425.tar.gz
android-node-v8-ed8d97f572fab15025da0c762e5edfbcbe45f425.tar.bz2
android-node-v8-ed8d97f572fab15025da0c762e5edfbcbe45f425.zip
uv: upgrade to v0.11.12
* upgrade deps/uv/ to v0.11.12. * update files in src/ after a libuv API change.
Diffstat (limited to 'deps/uv/src/uv-common.c')
-rw-r--r--deps/uv/src/uv-common.c147
1 files changed, 84 insertions, 63 deletions
diff --git a/deps/uv/src/uv-common.c b/deps/uv/src/uv-common.c
index 95f5011f1d..bc96029f65 100644
--- a/deps/uv/src/uv-common.c
+++ b/deps/uv/src/uv-common.c
@@ -125,31 +125,26 @@ const char* uv_strerror(int err) {
#undef UV_STRERROR_GEN
-struct sockaddr_in uv_ip4_addr(const char* ip, int port) {
- struct sockaddr_in addr;
-
- memset(&addr, 0, sizeof(struct sockaddr_in));
-
- addr.sin_family = AF_INET;
- addr.sin_port = htons(port);
- addr.sin_addr.s_addr = inet_addr(ip);
-
- return addr;
+int uv_ip4_addr(const char* ip, int port, struct sockaddr_in* addr) {
+ memset(addr, 0, sizeof(*addr));
+ addr->sin_family = AF_INET;
+ addr->sin_port = htons(port);
+ /* TODO(bnoordhuis) Don't use inet_addr(), no good way to detect errors. */
+ addr->sin_addr.s_addr = inet_addr(ip);
+ return 0;
}
-struct sockaddr_in6 uv_ip6_addr(const char* ip, int port) {
- struct sockaddr_in6 addr;
+int uv_ip6_addr(const char* ip, int port, struct sockaddr_in6* addr) {
#if defined(UV_PLATFORM_HAS_IP6_LINK_LOCAL_ADDRESS)
char address_part[40];
size_t address_part_size;
const char* zone_index;
#endif
- memset(&addr, 0, sizeof(struct sockaddr_in6));
-
- addr.sin6_family = AF_INET6;
- addr.sin6_port = htons(port);
+ memset(addr, 0, sizeof(*addr));
+ addr->sin6_family = AF_INET6;
+ addr->sin6_port = htons(port);
#if defined(UV_PLATFORM_HAS_IP6_LINK_LOCAL_ADDRESS)
zone_index = strchr(ip, '%');
@@ -165,17 +160,17 @@ struct sockaddr_in6 uv_ip6_addr(const char* ip, int port) {
zone_index++; /* skip '%' */
/* NOTE: unknown interface (id=0) is silently ignored */
#ifdef _WIN32
- addr.sin6_scope_id = atoi(zone_index);
+ addr->sin6_scope_id = atoi(zone_index);
#else
- addr.sin6_scope_id = if_nametoindex(zone_index);
+ addr->sin6_scope_id = if_nametoindex(zone_index);
#endif
}
#endif
- /* result code is ignored - we assume ip is a valid IPv6 address */
- uv_inet_pton(AF_INET6, ip, &addr.sin6_addr);
+ /* TODO(bnoordhuis) Return an error when the address is bad. */
+ uv_inet_pton(AF_INET6, ip, &addr->sin6_addr);
- return addr;
+ return 0;
}
@@ -189,87 +184,113 @@ int uv_ip6_name(struct sockaddr_in6* src, char* dst, size_t size) {
}
-int uv_tcp_bind(uv_tcp_t* handle, struct sockaddr_in addr) {
- if (handle->type != UV_TCP || addr.sin_family != AF_INET)
- return UV_EINVAL;
+int uv_tcp_bind(uv_tcp_t* handle, const struct sockaddr_in* addr) {
+ if (handle->type == UV_TCP && addr->sin_family == AF_INET)
+ return uv__tcp_bind(handle, (const struct sockaddr*) addr, sizeof(*addr));
else
- return uv__tcp_bind(handle, addr);
+ return UV_EINVAL;
}
-int uv_tcp_bind6(uv_tcp_t* handle, struct sockaddr_in6 addr) {
- if (handle->type != UV_TCP || addr.sin6_family != AF_INET6)
- return UV_EINVAL;
+int uv_tcp_bind6(uv_tcp_t* handle, const struct sockaddr_in6* addr) {
+ if (handle->type == UV_TCP && addr->sin6_family == AF_INET6)
+ return uv__tcp_bind(handle, (const struct sockaddr*) addr, sizeof(*addr));
else
- return uv__tcp_bind6(handle, addr);
+ return UV_EINVAL;
}
int uv_udp_bind(uv_udp_t* handle,
- struct sockaddr_in addr,
+ const struct sockaddr_in* addr,
unsigned int flags) {
- if (handle->type != UV_UDP || addr.sin_family != AF_INET)
- return UV_EINVAL;
- else
- return uv__udp_bind(handle, addr, flags);
+ if (handle->type == UV_UDP && addr->sin_family == AF_INET) {
+ return uv__udp_bind(handle,
+ (const struct sockaddr*) addr,
+ sizeof(*addr),
+ flags);
+ }
+ return UV_EINVAL;
}
int uv_udp_bind6(uv_udp_t* handle,
- struct sockaddr_in6 addr,
+ const struct sockaddr_in6* addr,
unsigned int flags) {
- if (handle->type != UV_UDP || addr.sin6_family != AF_INET6)
- return UV_EINVAL;
- else
- return uv__udp_bind6(handle, addr, flags);
+ if (handle->type == UV_UDP && addr->sin6_family == AF_INET6) {
+ return uv__udp_bind(handle,
+ (const struct sockaddr*) addr,
+ sizeof(*addr),
+ flags);
+ }
+ return UV_EINVAL;
}
int uv_tcp_connect(uv_connect_t* req,
uv_tcp_t* handle,
- struct sockaddr_in address,
+ const struct sockaddr_in* addr,
uv_connect_cb cb) {
- if (handle->type != UV_TCP || address.sin_family != AF_INET)
- return UV_EINVAL;
- else
- return uv__tcp_connect(req, handle, address, cb);
+ if (handle->type == UV_TCP && addr->sin_family == AF_INET) {
+ return uv__tcp_connect(req,
+ handle,
+ (const struct sockaddr*) addr,
+ sizeof(*addr),
+ cb);
+ }
+ return UV_EINVAL;
}
int uv_tcp_connect6(uv_connect_t* req,
uv_tcp_t* handle,
- struct sockaddr_in6 address,
+ const struct sockaddr_in6* addr,
uv_connect_cb cb) {
- if (handle->type != UV_TCP || address.sin6_family != AF_INET6)
- return UV_EINVAL;
- else
- return uv__tcp_connect6(req, handle, address, cb);
+ if (handle->type == UV_TCP && addr->sin6_family == AF_INET6) {
+ return uv__tcp_connect(req,
+ handle,
+ (const struct sockaddr*) addr,
+ sizeof(*addr),
+ cb);
+ }
+ return UV_EINVAL;
}
int uv_udp_send(uv_udp_send_t* req,
uv_udp_t* handle,
- uv_buf_t bufs[],
- int bufcnt,
- struct sockaddr_in addr,
+ const uv_buf_t bufs[],
+ unsigned int nbufs,
+ const struct sockaddr_in* addr,
uv_udp_send_cb send_cb) {
- if (handle->type != UV_UDP || addr.sin_family != AF_INET)
- return UV_EINVAL;
- else
- return uv__udp_send(req, handle, bufs, bufcnt, addr, send_cb);
+ if (handle->type == UV_UDP && addr->sin_family == AF_INET) {
+ return uv__udp_send(req,
+ handle,
+ bufs,
+ nbufs,
+ (const struct sockaddr*) addr,
+ sizeof(*addr),
+ send_cb);
+ }
+ return UV_EINVAL;
}
int uv_udp_send6(uv_udp_send_t* req,
uv_udp_t* handle,
- uv_buf_t bufs[],
- int bufcnt,
- struct sockaddr_in6 addr,
+ const uv_buf_t bufs[],
+ unsigned int nbufs,
+ const struct sockaddr_in6* addr,
uv_udp_send_cb send_cb) {
- if (handle->type != UV_UDP || addr.sin6_family != AF_INET6)
- return UV_EINVAL;
- else
- return uv__udp_send6(req, handle, bufs, bufcnt, addr, send_cb);
+ if (handle->type == UV_UDP && addr->sin6_family == AF_INET6) {
+ return uv__udp_send(req,
+ handle,
+ bufs,
+ nbufs,
+ (const struct sockaddr*) addr,
+ sizeof(*addr),
+ send_cb);
+ }
+ return UV_EINVAL;
}