windows fix

This commit is contained in:
John Smith 2024-04-26 16:34:58 -04:00
parent 4906c5df78
commit 06aa4cfa69

View File

@ -15,25 +15,25 @@ cfg_if! {
use socket2::{Domain, Protocol, SockAddr, Socket, Type}; use socket2::{Domain, Protocol, SockAddr, Socket, Type};
cfg_if! { // cfg_if! {
if #[cfg(windows)] { // if #[cfg(windows)] {
use winapi::shared::ws2def::{ SOL_SOCKET, SO_EXCLUSIVEADDRUSE}; // use winapi::shared::ws2def::{ SOL_SOCKET, SO_EXCLUSIVEADDRUSE};
use winapi::um::winsock2::{SOCKET_ERROR, setsockopt}; // use winapi::um::winsock2::{SOCKET_ERROR, setsockopt};
use winapi::ctypes::c_int; // use winapi::ctypes::c_int;
use std::os::windows::io::AsRawSocket; // use std::os::windows::io::AsRawSocket;
fn set_exclusiveaddruse(socket: &Socket) -> io::Result<()> { // fn set_exclusiveaddruse(socket: &Socket) -> io::Result<()> {
unsafe { // unsafe {
let optval:c_int = 1; // let optval:c_int = 1;
if setsockopt(socket.as_raw_socket().try_into().unwrap(), SOL_SOCKET, SO_EXCLUSIVEADDRUSE, (&optval as *const c_int).cast(), // if setsockopt(socket.as_raw_socket().try_into().unwrap(), SOL_SOCKET, SO_EXCLUSIVEADDRUSE, (&optval as *const c_int).cast(),
std::mem::size_of::<c_int>() as c_int) == SOCKET_ERROR { // std::mem::size_of::<c_int>() as c_int) == SOCKET_ERROR {
return Err(io::Error::last_os_error()); // return Err(io::Error::last_os_error());
} // }
Ok(()) // Ok(())
} // }
} // }
} // }
} // }
#[instrument(level = "trace", ret)] #[instrument(level = "trace", ret)]
pub fn new_shared_udp_socket(domain: Domain) -> io::Result<Socket> { pub fn new_shared_udp_socket(domain: Domain) -> io::Result<Socket> {