diff --git a/src/platform/redox/socket.rs b/src/platform/redox/socket.rs index 0b534b7254..d411b5d9cb 100644 --- a/src/platform/redox/socket.rs +++ b/src/platform/redox/socket.rs @@ -69,6 +69,16 @@ 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::Bind => { + //bind is not a valid socket call for AF_UNSPEC + return Err(Errno(EAFNOSUPPORT)); + } + SocketCall::Connect => { + "0.0.0.0:0".to_string() + } + _ => unreachable!(), + } _ => return Err(Errno(EAFNOSUPPORT)), }; let fd = syscall::dup(socket as usize, path.as_bytes())?; @@ -667,6 +677,9 @@ impl PalSocket for Sys { )?; Result::::Ok(0) } + AF_UNSPEC => unsafe { + bind_or_connect_into(SocketCall::Connect, socket, address, address_len) + } _ => Err(Errno(EAFNOSUPPORT)), } }