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:
parent
c363cd0dba
commit
5fceccc535
@ -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);
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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();
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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));
|
||||
|
||||
@ -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);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user