From 7c733fc3b3672050fe57afb63d5dfe0cebdcb474 Mon Sep 17 00:00:00 2001 From: Benton60 Date: Fri, 3 Apr 2026 23:31:18 -0400 Subject: [PATCH 1/3] adding support for disconnecting via AF_UNSPEC --- src/platform/redox/socket.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/platform/redox/socket.rs b/src/platform/redox/socket.rs index 0b534b7254..83f22dc767 100644 --- a/src/platform/redox/socket.rs +++ b/src/platform/redox/socket.rs @@ -69,6 +69,13 @@ unsafe fn bind_or_connect( log::warn!("bind/connect with AF_UNIX were replaced with SYS_CALL."); return Err(Errno(EAFNOSUPPORT)); } + AF_UNSPEC => { + match op { + SocketCall::Connect => format!(""), + SocketCall::Bind => return Err(Errno(EAFNOSUPPORT)), + _ => unreachable!(), + } + } _ => return Err(Errno(EAFNOSUPPORT)), }; let fd = syscall::dup(socket as usize, path.as_bytes())?; @@ -667,6 +674,9 @@ impl PalSocket for Sys { )?; Result::::Ok(0) } + AF_UNSPEC => unsafe { + bind_or_connect_into(SocketCall::Connect, socket, address, address_len) + } _ => Err(Errno(EAFNOSUPPORT)), } } From 2b63e37410ae914f40d27c4f69c2874f6e1ff669 Mon Sep 17 00:00:00 2001 From: Benton60 Date: Sun, 5 Apr 2026 01:26:45 -0400 Subject: [PATCH 2/3] fix behavior to always nullify the address regardless of what is passed in. --- src/platform/redox/socket.rs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/platform/redox/socket.rs b/src/platform/redox/socket.rs index 83f22dc767..441daa627f 100644 --- a/src/platform/redox/socket.rs +++ b/src/platform/redox/socket.rs @@ -69,12 +69,15 @@ unsafe fn bind_or_connect( log::warn!("bind/connect with AF_UNIX were replaced with SYS_CALL."); return Err(Errno(EAFNOSUPPORT)); } - AF_UNSPEC => { - match op { - SocketCall::Connect => format!(""), - SocketCall::Bind => return Err(Errno(EAFNOSUPPORT)), - _ => unreachable!(), + AF_UNSPEC => match op { + SocketCall::Bind => { + //bind is not a valid socket call for AF_UNSPEC + return Err(Errno(EAFNOSUPPORT)); } + SocketCall::Connect => { + format!("{}.{}.{}.{}:{}", 0, 0, 0, 0, 0) + } + _ => unreachable!(), } _ => return Err(Errno(EAFNOSUPPORT)), }; From 933a53bfc001c6ca863c5956d49796c89b81663a Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sun, 5 Apr 2026 07:51:20 -0600 Subject: [PATCH 3/3] Apply 1 suggestion(s) to 1 file(s) Co-authored-by: Mathew John Roberts --- src/platform/redox/socket.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/platform/redox/socket.rs b/src/platform/redox/socket.rs index 441daa627f..d411b5d9cb 100644 --- a/src/platform/redox/socket.rs +++ b/src/platform/redox/socket.rs @@ -75,7 +75,7 @@ unsafe fn bind_or_connect( return Err(Errno(EAFNOSUPPORT)); } SocketCall::Connect => { - format!("{}.{}.{}.{}:{}", 0, 0, 0, 0, 0) + "0.0.0.0:0".to_string() } _ => unreachable!(), }