diff --git a/oio-unix.c b/oio-unix.c index aa23c980..ea3ad131 100644 --- a/oio-unix.c +++ b/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; diff --git a/test/test-bind-error.c b/test/test-bind-error.c index dd27c6bc..c1b7b9b9 100644 --- a/test/test-bind-error.c +++ b/test/test-bind-error.c @@ -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; diff --git a/test/test-list.h b/test/test-list.h index 06c64fd7..7ebf6d24 100644 --- a/test/test-list.h +++ b/test/test-list.h @@ -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)