No EACCESS, expect EADDRNOTAVAIL instead
This commit is contained in:
parent
17c568b235
commit
26148c1310
10
oio-unix.c
10
oio-unix.c
@ -204,16 +204,6 @@ int oio_bind(oio_handle* handle, struct sockaddr* addr) {
|
||||
if (addr->sa_family == AF_INET) {
|
||||
addrsize = sizeof(struct sockaddr_in);
|
||||
domain = AF_INET;
|
||||
|
||||
struct sockaddr_in* addr_in = (struct sockaddr_in*)addr;
|
||||
|
||||
/* For platform compat, if the address is 255.255.255.255 then we must
|
||||
* return EACCESS. */
|
||||
if (addr_in->sin_addr.s_addr == 0xFFFFFFFF) {
|
||||
oio_err_new(handle, EACCES);
|
||||
return -1;
|
||||
}
|
||||
|
||||
} else if (addr->sa_family == AF_INET6) {
|
||||
addrsize = sizeof(struct sockaddr_in6);
|
||||
domain = AF_INET6;
|
||||
|
||||
@ -43,30 +43,6 @@ static oio_buf alloc_cb(oio_handle* handle, size_t size) {
|
||||
}
|
||||
|
||||
|
||||
TEST_IMPL(bind_error_access) {
|
||||
struct sockaddr_in addr = oio_ip4_addr("255.255.255.255", TEST_PORT);
|
||||
oio_handle server;
|
||||
int r;
|
||||
|
||||
oio_init(alloc_cb);
|
||||
|
||||
r = oio_tcp_init(&server, close_cb, NULL);
|
||||
ASSERT(r == 0);
|
||||
r = oio_bind(&server, (struct sockaddr*) &addr);
|
||||
ASSERT(r == -1);
|
||||
|
||||
ASSERT(oio_last_error().code == OIO_EACCESS);
|
||||
|
||||
oio_close(&server);
|
||||
|
||||
oio_run();
|
||||
|
||||
ASSERT(close_cb_called == 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
TEST_IMPL(bind_error_addrinuse) {
|
||||
struct sockaddr_in addr = oio_ip4_addr("0.0.0.0", TEST_PORT);
|
||||
oio_handle server1, server2;
|
||||
@ -102,7 +78,30 @@ TEST_IMPL(bind_error_addrinuse) {
|
||||
}
|
||||
|
||||
|
||||
TEST_IMPL(bind_error_addrnotavail) {
|
||||
TEST_IMPL(bind_error_addrnotavail_1) {
|
||||
struct sockaddr_in addr = oio_ip4_addr("127.255.255.255", TEST_PORT);
|
||||
oio_handle server;
|
||||
int r;
|
||||
|
||||
oio_init(alloc_cb);
|
||||
|
||||
r = oio_tcp_init(&server, close_cb, NULL);
|
||||
ASSERT(r == 0);
|
||||
r = oio_bind(&server, (struct sockaddr*) &addr);
|
||||
ASSERT(r == -1);
|
||||
ASSERT(oio_last_error().code == OIO_EADDRNOTAVAIL);
|
||||
|
||||
oio_close(&server);
|
||||
|
||||
oio_run();
|
||||
|
||||
ASSERT(close_cb_called == 1);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
TEST_IMPL(bind_error_addrnotavail_2) {
|
||||
struct sockaddr_in addr = oio_ip4_addr("4.4.4.4", TEST_PORT);
|
||||
oio_handle server;
|
||||
int r;
|
||||
|
||||
@ -22,9 +22,9 @@
|
||||
TEST_DECLARE (ping_pong)
|
||||
TEST_DECLARE (delayed_accept)
|
||||
TEST_DECLARE (tcp_writealot)
|
||||
TEST_DECLARE (bind_error_access)
|
||||
TEST_DECLARE (bind_error_addrinuse)
|
||||
TEST_DECLARE (bind_error_addrnotavail)
|
||||
TEST_DECLARE (bind_error_addrnotavail_1)
|
||||
TEST_DECLARE (bind_error_addrnotavail_2)
|
||||
TEST_DECLARE (bind_error_fault_1)
|
||||
TEST_DECLARE (bind_error_inval)
|
||||
TEST_DECLARE (connection_fail)
|
||||
@ -43,11 +43,11 @@ TASK_LIST_START
|
||||
TEST_ENTRY (tcp_writealot)
|
||||
TEST_HELPER (tcp_writealot, echo_server)
|
||||
|
||||
TEST_ENTRY (bind_error_access)
|
||||
|
||||
TEST_ENTRY (bind_error_addrinuse)
|
||||
|
||||
TEST_ENTRY (bind_error_addrnotavail)
|
||||
TEST_ENTRY (bind_error_addrnotavail_1)
|
||||
|
||||
TEST_ENTRY (bind_error_addrnotavail_2)
|
||||
|
||||
TEST_ENTRY (bind_error_fault_1)
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user