include: merge uv_tcp_bind and uv_tcp_bind6

Merge uv_tcp_bind6() into uv_tcp_bind().  uv_tcp_bind() now takes a
const struct sockaddr*.
This commit is contained in:
Ben Noordhuis 2013-09-03 22:48:17 +02:00
parent c363cd0dba
commit 5fceccc535
19 changed files with 52 additions and 46 deletions

View File

@ -766,8 +766,11 @@ UV_EXTERN int uv_tcp_keepalive(uv_tcp_t* handle,
*/
UV_EXTERN int uv_tcp_simultaneous_accepts(uv_tcp_t* handle, int enable);
UV_EXTERN int uv_tcp_bind(uv_tcp_t* handle, const struct sockaddr_in* addr);
UV_EXTERN int uv_tcp_bind6(uv_tcp_t* handle, const struct sockaddr_in6* addr);
/*
* Bind the handle to an address and port. `addr` should point to an
* initialized struct sockaddr_in or struct sockaddr_in6.
*/
UV_EXTERN int uv_tcp_bind(uv_tcp_t* handle, const struct sockaddr* addr);
UV_EXTERN int uv_tcp_getsockname(uv_tcp_t* handle, struct sockaddr* name,
int* namelen);

View File

@ -191,19 +191,20 @@ int uv_ip6_name(struct sockaddr_in6* src, char* dst, size_t size) {
}
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));
int uv_tcp_bind(uv_tcp_t* handle, const struct sockaddr* addr) {
unsigned int addrlen;
if (handle->type != UV_TCP)
return UV_EINVAL;
if (addr->sa_family == AF_INET)
addrlen = sizeof(struct sockaddr_in);
else if (addr->sa_family == AF_INET6)
addrlen = sizeof(struct sockaddr_in6);
else
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_EINVAL;
return uv__tcp_bind(handle, addr, addrlen);
}

View File

@ -209,7 +209,8 @@ static void send_listen_handles(uv_handle_type type,
if (type == UV_TCP) {
ASSERT(0 == uv_tcp_init(loop, (uv_tcp_t*) &ctx.server_handle));
ASSERT(0 == uv_tcp_bind((uv_tcp_t*) &ctx.server_handle, &listen_addr));
ASSERT(0 == uv_tcp_bind((uv_tcp_t*) &ctx.server_handle,
(const struct sockaddr*) &listen_addr));
}
else
ASSERT(0);

View File

@ -191,7 +191,7 @@ static void pinger_new(void) {
pinger->tcp.data = pinger;
uv_tcp_bind(&pinger->tcp, &client_addr);
ASSERT(0 == uv_tcp_bind(&pinger->tcp, (const struct sockaddr*) &client_addr));
r = uv_tcp_connect(&pinger->connect_req,
&pinger->tcp,

View File

@ -366,7 +366,7 @@ HELPER_IMPL(tcp_pump_server) {
server = (uv_stream_t*)&tcpServer;
r = uv_tcp_init(loop, &tcpServer);
ASSERT(r == 0);
r = uv_tcp_bind(&tcpServer, &listen_addr);
r = uv_tcp_bind(&tcpServer, (const struct sockaddr*) &listen_addr);
ASSERT(r == 0);
r = uv_listen((uv_stream_t*)&tcpServer, MAX_WRITE_HANDLES, connection_cb);
ASSERT(r == 0);

View File

@ -108,7 +108,7 @@ HELPER_IMPL(tcp4_blackhole_server) {
r = uv_tcp_init(loop, &tcp_server);
ASSERT(r == 0);
r = uv_tcp_bind(&tcp_server, &addr);
r = uv_tcp_bind(&tcp_server, (const struct sockaddr*) &addr);
ASSERT(r == 0);
r = uv_listen((uv_stream_t*)&tcp_server, 128, connection_cb);

View File

@ -305,7 +305,7 @@ static int dns_start(int port) {
return 1;
}
r = uv_tcp_bind(&server, &addr);
r = uv_tcp_bind(&server, (const struct sockaddr*) &addr);
if (r) {
/* TODO: Error codes */
fprintf(stderr, "Bind error\n");

View File

@ -236,7 +236,7 @@ static int tcp4_echo_start(int port) {
return 1;
}
r = uv_tcp_bind(&tcpServer, &addr);
r = uv_tcp_bind(&tcpServer, (const struct sockaddr*) &addr);
if (r) {
/* TODO: Error codes */
fprintf(stderr, "Bind error\n");
@ -271,7 +271,7 @@ static int tcp6_echo_start(int port) {
}
/* IPv6 is optional as not all platforms support it */
r = uv_tcp_bind6(&tcpServer, &addr6);
r = uv_tcp_bind(&tcpServer, (const struct sockaddr*) &addr6);
if (r) {
/* show message but return OK */
fprintf(stderr, "IPv6 not supported\n");

View File

@ -101,7 +101,8 @@ static void connection_fail(uv_connect_cb connect_cb) {
/* We are never doing multiple reads/connects at a time anyway. */
/* so these handles can be pre-initialized. */
uv_tcp_bind(&tcp, &client_addr);
ASSERT(0 == uv_tcp_bind(&tcp, (const struct sockaddr*) &client_addr));
r = uv_tcp_connect(&req, &tcp, &server_addr, connect_cb);
ASSERT(!r);

View File

@ -108,7 +108,7 @@ static void start_server(void) {
r = uv_tcp_init(uv_default_loop(), server);
ASSERT(r == 0);
r = uv_tcp_bind(server, &addr);
r = uv_tcp_bind(server, (const struct sockaddr*) &addr);
ASSERT(r == 0);
r = uv_listen((uv_stream_t*)server, 128, connection_cb);

View File

@ -180,7 +180,7 @@ static int tcp_listener(void) {
return 1;
}
r = uv_tcp_bind(&tcpServer, &addr);
r = uv_tcp_bind(&tcpServer, (const struct sockaddr*) &addr);
if (r) {
fprintf(stderr, "Bind error\n");
return 1;

View File

@ -145,7 +145,7 @@ TEST_IMPL(ipc_send_recv_tcp) {
r = uv_tcp_init(uv_default_loop(), &ctx.send.tcp);
ASSERT(r == 0);
r = uv_tcp_bind(&ctx.send.tcp, &addr);
r = uv_tcp_bind(&ctx.send.tcp, (const struct sockaddr*) &addr);
ASSERT(r == 0);
r = run_test();

View File

@ -375,7 +375,7 @@ TEST_IMPL(listen_with_simultaneous_accepts) {
r = uv_tcp_init(uv_default_loop(), &server);
ASSERT(r == 0);
r = uv_tcp_bind(&server, &addr);
r = uv_tcp_bind(&server, (const struct sockaddr*) &addr);
ASSERT(r == 0);
r = uv_tcp_simultaneous_accepts(&server, 1);
@ -400,7 +400,7 @@ TEST_IMPL(listen_no_simultaneous_accepts) {
r = uv_tcp_init(uv_default_loop(), &server);
ASSERT(r == 0);
r = uv_tcp_bind(&server, &addr);
r = uv_tcp_bind(&server, (const struct sockaddr*) &addr);
ASSERT(r == 0);
r = uv_tcp_simultaneous_accepts(&server, 0);
@ -566,7 +566,7 @@ int ipc_helper(int listen_after_write) {
r = uv_tcp_init(uv_default_loop(), &tcp_server);
ASSERT(r == 0);
r = uv_tcp_bind(&tcp_server, &addr);
r = uv_tcp_bind(&tcp_server, (const struct sockaddr*) &addr);
ASSERT(r == 0);
if (!listen_after_write) {
@ -618,7 +618,7 @@ int ipc_helper_tcp_connection(void) {
ASSERT(0 == uv_ip4_addr("0.0.0.0", TEST_PORT, &addr));
r = uv_tcp_bind(&tcp_server, &addr);
r = uv_tcp_bind(&tcp_server, (const struct sockaddr*) &addr);
ASSERT(r == 0);
r = uv_listen((uv_stream_t*)&tcp_server, 12, ipc_on_connection_tcp_conn);

View File

@ -53,7 +53,7 @@ static void start_server(void) {
r = uv_tcp_init(uv_default_loop(), &server);
ASSERT(r == 0);
r = uv_tcp_bind(&server, &addr);
r = uv_tcp_bind(&server, (const struct sockaddr*) &addr);
ASSERT(r == 0);
r = uv_listen((uv_stream_t*)&server, 128, connection_cb);

View File

@ -42,12 +42,12 @@ TEST_IMPL(tcp_bind_error_addrinuse) {
ASSERT(0 == uv_ip4_addr("0.0.0.0", TEST_PORT, &addr));
r = uv_tcp_init(uv_default_loop(), &server1);
ASSERT(r == 0);
r = uv_tcp_bind(&server1, &addr);
r = uv_tcp_bind(&server1, (const struct sockaddr*) &addr);
ASSERT(r == 0);
r = uv_tcp_init(uv_default_loop(), &server2);
ASSERT(r == 0);
r = uv_tcp_bind(&server2, &addr);
r = uv_tcp_bind(&server2, (const struct sockaddr*) &addr);
ASSERT(r == 0);
r = uv_listen((uv_stream_t*)&server1, 128, NULL);
@ -78,7 +78,7 @@ TEST_IMPL(tcp_bind_error_addrnotavail_1) {
ASSERT(r == 0);
/* It seems that Linux is broken here - bind succeeds. */
r = uv_tcp_bind(&server, &addr);
r = uv_tcp_bind(&server, (const struct sockaddr*) &addr);
ASSERT(r == 0 || r == UV_EADDRNOTAVAIL);
uv_close((uv_handle_t*)&server, close_cb);
@ -101,7 +101,7 @@ TEST_IMPL(tcp_bind_error_addrnotavail_2) {
r = uv_tcp_init(uv_default_loop(), &server);
ASSERT(r == 0);
r = uv_tcp_bind(&server, &addr);
r = uv_tcp_bind(&server, (const struct sockaddr*) &addr);
ASSERT(r == UV_EADDRNOTAVAIL);
uv_close((uv_handle_t*)&server, close_cb);
@ -125,7 +125,7 @@ TEST_IMPL(tcp_bind_error_fault) {
r = uv_tcp_init(uv_default_loop(), &server);
ASSERT(r == 0);
r = uv_tcp_bind(&server, garbage_addr);
r = uv_tcp_bind(&server, (const struct sockaddr*) garbage_addr);
ASSERT(r == UV_EINVAL);
uv_close((uv_handle_t*)&server, close_cb);
@ -151,9 +151,9 @@ TEST_IMPL(tcp_bind_error_inval) {
r = uv_tcp_init(uv_default_loop(), &server);
ASSERT(r == 0);
r = uv_tcp_bind(&server, &addr1);
r = uv_tcp_bind(&server, (const struct sockaddr*) &addr1);
ASSERT(r == 0);
r = uv_tcp_bind(&server, &addr2);
r = uv_tcp_bind(&server, (const struct sockaddr*) &addr2);
ASSERT(r == UV_EINVAL);
uv_close((uv_handle_t*)&server, close_cb);
@ -176,7 +176,7 @@ TEST_IMPL(tcp_bind_localhost_ok) {
r = uv_tcp_init(uv_default_loop(), &server);
ASSERT(r == 0);
r = uv_tcp_bind(&server, &addr);
r = uv_tcp_bind(&server, (const struct sockaddr*) &addr);
ASSERT(r == 0);
MAKE_VALGRIND_HAPPY();

View File

@ -43,12 +43,12 @@ TEST_IMPL(tcp_bind6_error_addrinuse) {
r = uv_tcp_init(uv_default_loop(), &server1);
ASSERT(r == 0);
r = uv_tcp_bind6(&server1, &addr);
r = uv_tcp_bind(&server1, (const struct sockaddr*) &addr);
ASSERT(r == 0);
r = uv_tcp_init(uv_default_loop(), &server2);
ASSERT(r == 0);
r = uv_tcp_bind6(&server2, &addr);
r = uv_tcp_bind(&server2, (const struct sockaddr*) &addr);
ASSERT(r == 0);
r = uv_listen((uv_stream_t*)&server1, 128, NULL);
@ -77,7 +77,7 @@ TEST_IMPL(tcp_bind6_error_addrnotavail) {
r = uv_tcp_init(uv_default_loop(), &server);
ASSERT(r == 0);
r = uv_tcp_bind6(&server, &addr);
r = uv_tcp_bind(&server, (const struct sockaddr*) &addr);
ASSERT(r == UV_EADDRNOTAVAIL);
uv_close((uv_handle_t*)&server, close_cb);
@ -101,7 +101,7 @@ TEST_IMPL(tcp_bind6_error_fault) {
r = uv_tcp_init(uv_default_loop(), &server);
ASSERT(r == 0);
r = uv_tcp_bind6(&server, garbage_addr);
r = uv_tcp_bind(&server, (const struct sockaddr*) garbage_addr);
ASSERT(r == UV_EINVAL);
uv_close((uv_handle_t*)&server, close_cb);
@ -127,9 +127,9 @@ TEST_IMPL(tcp_bind6_error_inval) {
r = uv_tcp_init(uv_default_loop(), &server);
ASSERT(r == 0);
r = uv_tcp_bind6(&server, &addr1);
r = uv_tcp_bind(&server, (const struct sockaddr*) &addr1);
ASSERT(r == 0);
r = uv_tcp_bind6(&server, &addr2);
r = uv_tcp_bind(&server, (const struct sockaddr*) &addr2);
ASSERT(r == UV_EINVAL);
uv_close((uv_handle_t*)&server, close_cb);
@ -152,7 +152,7 @@ TEST_IMPL(tcp_bind6_localhost_ok) {
r = uv_tcp_init(uv_default_loop(), &server);
ASSERT(r == 0);
r = uv_tcp_bind6(&server, &addr);
r = uv_tcp_bind(&server, (const struct sockaddr*) &addr);
ASSERT(r == 0);
MAKE_VALGRIND_HAPPY();

View File

@ -85,7 +85,7 @@ static void start_server(uv_loop_t* loop, uv_tcp_t* handle) {
r = uv_tcp_init(loop, handle);
ASSERT(r == 0);
r = uv_tcp_bind(handle, &addr);
r = uv_tcp_bind(handle, (const struct sockaddr*) &addr);
ASSERT(r == 0);
r = uv_listen((uv_stream_t*)handle, 128, connection_cb);

View File

@ -98,7 +98,7 @@ TEST_IMPL(tcp_unexpected_read) {
ASSERT(0 == uv_tcp_init(loop, &server_handle));
ASSERT(0 == uv_tcp_init(loop, &client_handle));
ASSERT(0 == uv_tcp_init(loop, &peer_handle));
ASSERT(0 == uv_tcp_bind(&server_handle, &addr));
ASSERT(0 == uv_tcp_bind(&server_handle, (const struct sockaddr*) &addr));
ASSERT(0 == uv_listen((uv_stream_t*) &server_handle, 1, connection_cb));
ASSERT(0 == uv_tcp_connect(&connect_req, &client_handle, &addr, connect_cb));
ASSERT(0 == uv_run(loop, UV_RUN_DEFAULT));

View File

@ -115,7 +115,7 @@ TEST_IMPL(tcp_write_to_half_open_connection) {
r = uv_tcp_init(loop, &tcp_server);
ASSERT(r == 0);
r = uv_tcp_bind(&tcp_server, &addr);
r = uv_tcp_bind(&tcp_server, (const struct sockaddr*) &addr);
ASSERT(r == 0);
r = uv_listen((uv_stream_t*)&tcp_server, 1, connection_cb);