diff --git a/crates/shadowsocks-service/src/local/redir/sys/mod.rs b/crates/shadowsocks-service/src/local/redir/sys/mod.rs index 4e76ec64..21d65101 100644 --- a/crates/shadowsocks-service/src/local/redir/sys/mod.rs +++ b/crates/shadowsocks-service/src/local/redir/sys/mod.rs @@ -18,8 +18,7 @@ where S: std::os::unix::io::AsFd, { let sock = SockRef::from(socket); - let result = sock.set_only_v6(ipv6_only); - result + sock.set_only_v6(ipv6_only) } #[cfg(windows)] @@ -29,6 +28,5 @@ where S: std::os::windows::io::AsSocket, { let sock = SockRef::from(socket); - let result = sock.set_only_v6(ipv6_only); - result + sock.set_only_v6(ipv6_only) } diff --git a/crates/shadowsocks/src/net/sys/mod.rs b/crates/shadowsocks/src/net/sys/mod.rs index 49e69080..472cb1d5 100644 --- a/crates/shadowsocks/src/net/sys/mod.rs +++ b/crates/shadowsocks/src/net/sys/mod.rs @@ -74,9 +74,7 @@ where S: std::os::unix::io::AsFd, { let sock = SockRef::from(socket); - let result = socket_bind_dual_stack_inner(&sock, addr, ipv6_only); - - result + socket_bind_dual_stack_inner(&sock, addr, ipv6_only) } /// Try to call `bind()` with dual-stack enabled. @@ -88,9 +86,7 @@ where S: std::os::windows::io::AsSocket, { let sock = SockRef::from(socket); - let result = socket_bind_dual_stack_inner(&sock, addr, ipv6_only); - - result + socket_bind_dual_stack_inner(&sock, addr, ipv6_only) } fn socket_bind_dual_stack_inner(socket: &Socket, addr: &SocketAddr, ipv6_only: bool) -> io::Result<()> { diff --git a/crates/shadowsocks/src/net/sys/unix/mod.rs b/crates/shadowsocks/src/net/sys/unix/mod.rs index 2e02dce1..3586d8a1 100644 --- a/crates/shadowsocks/src/net/sys/unix/mod.rs +++ b/crates/shadowsocks/src/net/sys/unix/mod.rs @@ -101,8 +101,7 @@ where F: FnOnce(&Socket) -> io::Result<()>, { let socket = SockRef::from(stream); - let result = f(&socket); - result + f(&socket) } pub fn set_common_sockopt_after_connect(stream: &S, opts: &ConnectOpts) -> io::Result<()> diff --git a/crates/shadowsocks/src/net/sys/windows/mod.rs b/crates/shadowsocks/src/net/sys/windows/mod.rs index b6bfa7a9..06b9213c 100644 --- a/crates/shadowsocks/src/net/sys/windows/mod.rs +++ b/crates/shadowsocks/src/net/sys/windows/mod.rs @@ -165,8 +165,8 @@ pub fn set_tcp_fastopen(socket: &S) -> io::Result<()> { unsafe { let ret = setsockopt( socket.as_raw_socket() as SOCKET, - IPPROTO_TCP as i32, - TCP_FASTOPEN as i32, + IPPROTO_TCP, + TCP_FASTOPEN, &enable as *const _ as PCSTR, mem::size_of_val(&enable) as i32, ); @@ -233,12 +233,12 @@ fn find_adapter_interface_index(addr: &SocketAddr, iface: &str) -> io::Result return Ok(Some(ip_adapter_address.Anonymous1.Anonymous.IfIndex)), - IpAddr::V6(..) => return Ok(Some(ip_adapter_address.Ipv6IfIndex)), - } + if let Some(friendly_name) = friendly_name_os.to_str() + && friendly_name == iface + { + match ip { + IpAddr::V4(..) => return Ok(Some(ip_adapter_address.Anonymous1.Anonymous.IfIndex)), + IpAddr::V6(..) => return Ok(Some(ip_adapter_address.Ipv6IfIndex)), } } @@ -314,8 +314,8 @@ fn set_ip_unicast_if(socket: &S, addr: &SocketAddr, iface: &str) let if_index = htonl(if_index); setsockopt( handle, - IPPROTO_IP as i32, - IP_UNICAST_IF as i32, + IPPROTO_IP, + IP_UNICAST_IF, &if_index as *const _ as PCSTR, mem::size_of_val(&if_index) as i32, ) @@ -324,8 +324,8 @@ fn set_ip_unicast_if(socket: &S, addr: &SocketAddr, iface: &str) // Interface index is in host byte order for IPPROTO_IPV6. setsockopt( handle, - IPPROTO_IPV6 as i32, - IPV6_UNICAST_IF as i32, + IPPROTO_IPV6, + IPV6_UNICAST_IF, &if_index as *const _ as PCSTR, mem::size_of_val(&if_index) as i32, ) @@ -397,8 +397,8 @@ pub fn set_disable_ip_fragmentation(af: AddrFamily, socket: &S) let value = IP_PMTUDISC_DO; let ret = setsockopt( handle, - IPPROTO_IP as i32, - IP_MTU_DISCOVER as i32, + IPPROTO_IP, + IP_MTU_DISCOVER, &value as *const _ as PCSTR, mem::size_of_val(&value) as i32, ); @@ -412,8 +412,8 @@ pub fn set_disable_ip_fragmentation(af: AddrFamily, socket: &S) let value = IP_PMTUDISC_DO; let ret = setsockopt( handle, - IPPROTO_IPV6 as i32, - IPV6_MTU_DISCOVER as i32, + IPPROTO_IPV6, + IPV6_MTU_DISCOVER, &value as *const _ as PCSTR, mem::size_of_val(&value) as i32, ); @@ -502,10 +502,10 @@ pub async fn bind_outbound_udp_socket(bind_addr: &SocketAddr, opts: &ConnectOpts socket.set_nonblocking(true)?; let socket = UdpSocket::from_std(socket.into())?; - if !opts.udp.allow_fragmentation { - if let Err(err) = set_disable_ip_fragmentation(af, &socket) { - warn!("failed to disable IP fragmentation, error: {}", err); - } + if !opts.udp.allow_fragmentation + && let Err(err) = set_disable_ip_fragmentation(af, &socket) + { + warn!("failed to disable IP fragmentation, error: {}", err); } disable_connection_reset(&socket)?; @@ -519,8 +519,7 @@ where F: FnOnce(&Socket) -> io::Result<()>, { let socket = SockRef::from(stream); - let result = f(&socket); - result + f(&socket) } pub fn set_common_sockopt_after_connect(stream: &S, opts: &ConnectOpts) -> io::Result<()>