diff --git a/src/platform/redox/socket.rs b/src/platform/redox/socket.rs index b733e42f63..ecc8cec19c 100644 --- a/src/platform/redox/socket.rs +++ b/src/platform/redox/socket.rs @@ -137,7 +137,7 @@ unsafe fn inner_af_inet( let ret = sockaddr_in { sin_family: AF_INET as sa_family_t, - sin_port: port, + sin_port: u16::to_be(port), sin_addr: addr, ..sockaddr_in::default() @@ -808,12 +808,8 @@ impl PalSocket for Sys { if address == ptr::null_mut() || address_len == ptr::null_mut() { Self::read(socket, slice::from_raw_parts_mut(buf as *mut u8, len)) } else { - let fd = FdGuard::new(syscall::dup(socket as usize, b"listen")?); - Self::getpeername(fd.as_c_fd().unwrap(), address, address_len)?; - Self::read( - fd.as_c_fd().unwrap(), - slice::from_raw_parts_mut(buf as *mut u8, len), - ) + Self::getpeername(socket, address, address_len)?; + Self::read(socket, slice::from_raw_parts_mut(buf as *mut u8, len)) } } diff --git a/tests/Makefile b/tests/Makefile index 25933e09b4..92392c69fb 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -13,9 +13,6 @@ FAILING_TESTS=tls \ stdlib/ptsname \ sys_mman \ signals/pthread_kill-child \ - sys_socket/getpeername \ - sys_socket/recv \ - sys_socket/recvfrom \ sys_socket/unixpeername \ sys_socket/unixrecvfrom \ unistd/isatty \ @@ -273,6 +270,9 @@ VARIED_NAMES=\ stdlib/realpath \ sys_epoll/epoll \ sys_resource/constants \ + sys_socket/getpeername \ + sys_socket/recv \ + sys_socket/recvfrom \ sys_stat/stat \ sys_statvfs/statvfs \ sys_utsname/uname \ diff --git a/tests/sys_socket/recv.c b/tests/sys_socket/recv.c index f6a0f5457e..058fea14d9 100644 --- a/tests/sys_socket/recv.c +++ b/tests/sys_socket/recv.c @@ -20,7 +20,7 @@ int main(void) ERROR_IF(bind, status, == -1); status = listen(listen_fd, 1); - ERROR_IF(bind, status, == -1); + ERROR_IF(listen, status, == -1); status = getsockname(listen_fd, saddr, &addr_len); ERROR_IF(getsockname, status, == -1); @@ -32,11 +32,11 @@ int main(void) ERROR_IF(connect, status, == -1); int server_fd = accept(listen_fd, NULL, NULL); - ERROR_IF(connect, status, == -1); + ERROR_IF(accept, status, == -1); char *c = "foo"; status = send(server_fd, c, 4, 0); - ERROR_IF(sendto, status, == -1); + ERROR_IF(send, status, == -1); char x[4]; ssize_t amount = recv(client_fd, x, 4, 0);