From 99c942318a957bf320ad16f01542e9894938418b Mon Sep 17 00:00:00 2001 From: Wildan M Date: Wed, 7 Jan 2026 22:59:20 +0700 Subject: [PATCH 1/3] Fix inet hang, don't accept() on recvfrom --- src/platform/redox/socket.rs | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) 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)) } } From 02752dda271202e05c1b059e25e6d6699470eee8 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Wed, 7 Jan 2026 22:59:34 +0700 Subject: [PATCH 2/3] Enable some tests --- tests/Makefile | 4 ++-- tests/sys_socket/recv.c | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/Makefile b/tests/Makefile index 25933e09b4..422fcf6993 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -13,8 +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 \ @@ -273,6 +271,8 @@ VARIED_NAMES=\ stdlib/realpath \ sys_epoll/epoll \ sys_resource/constants \ + sys_socket/getpeername \ + sys_socket/recv \ 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); From ad3a39771b25231afca5a8a1bfe5a6b09e085c90 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Thu, 8 Jan 2026 01:42:46 +0700 Subject: [PATCH 3/3] Add more test --- tests/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/Makefile b/tests/Makefile index 422fcf6993..92392c69fb 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -13,7 +13,6 @@ FAILING_TESTS=tls \ stdlib/ptsname \ sys_mman \ signals/pthread_kill-child \ - sys_socket/recvfrom \ sys_socket/unixpeername \ sys_socket/unixrecvfrom \ unistd/isatty \ @@ -273,6 +272,7 @@ VARIED_NAMES=\ sys_resource/constants \ sys_socket/getpeername \ sys_socket/recv \ + sys_socket/recvfrom \ sys_stat/stat \ sys_statvfs/statvfs \ sys_utsname/uname \