diff --git a/easytier/src/arch/windows.rs b/easytier/src/arch/windows.rs index d709d499..abf14b23 100644 --- a/easytier/src/arch/windows.rs +++ b/easytier/src/arch/windows.rs @@ -345,7 +345,7 @@ fn add_protocol_firewall_rules( SafeArrayPutElement( interface_array, - &index as *const _ as *const i32, + &index as *const _, &variant_interface as *const _ as *const std::ffi::c_void, )?; diff --git a/easytier/src/common/ifcfg/windows.rs b/easytier/src/common/ifcfg/windows.rs index 35ef12f7..aa995e54 100644 --- a/easytier/src/common/ifcfg/windows.rs +++ b/easytier/src/common/ifcfg/windows.rs @@ -448,12 +448,11 @@ impl RegistryManager { for guid in network_key.enum_keys().map_while(Result::ok) { if let Ok(guid_key) = network_key.open_subkey_with_flags(&guid, KEY_READ) { // 检查 Connection/Name 是否匹配目标接口名 - if let Ok(conn_key) = guid_key.open_subkey_with_flags("Connection", KEY_READ) { - if let Ok(name) = conn_key.get_value::("Name") { - if name == interface_name { - return Ok(guid); - } - } + if let Ok(conn_key) = guid_key.open_subkey_with_flags("Connection", KEY_READ) + && let Ok(name) = conn_key.get_value::("Name") + && name == interface_name + { + return Ok(guid); } } } diff --git a/easytier/src/instance/dns_server/system_config/windows.rs b/easytier/src/instance/dns_server/system_config/windows.rs index 94f014d4..3c298cf9 100644 --- a/easytier/src/instance/dns_server/system_config/windows.rs +++ b/easytier/src/instance/dns_server/system_config/windows.rs @@ -202,13 +202,12 @@ mod tests { .arg("1") .arg("-w") .arg("100") - .arg(&fake_ip.to_string()) + .arg(fake_ip.to_string()) .output() .await + && o.status.success() { - if o.status.success() { - break; - } + break; } } diff --git a/easytier/src/service_manager/mod.rs b/easytier/src/service_manager/mod.rs index c1944504..9587c38c 100644 --- a/easytier/src/service_manager/mod.rs +++ b/easytier/src/service_manager/mod.rs @@ -491,10 +491,10 @@ mod win_service_manager { { Ok(s) => s, Err(e) => { - if let windows_service::Error::Winapi(ref win_err) = e { - if win_err.raw_os_error() == Some(0x424) { - return Ok(ServiceStatus::NotInstalled); - } + if let windows_service::Error::Winapi(ref win_err) = e + && win_err.raw_os_error() == Some(0x424) + { + return Ok(ServiceStatus::NotInstalled); } return Err(io::Error::other(e)); } diff --git a/easytier/src/tunnel/fake_tcp/netfilter/windivert.rs b/easytier/src/tunnel/fake_tcp/netfilter/windivert.rs index 1d58f235..fdbe0877 100644 --- a/easytier/src/tunnel/fake_tcp/netfilter/windivert.rs +++ b/easytier/src/tunnel/fake_tcp/netfilter/windivert.rs @@ -68,10 +68,10 @@ pub struct WinDivertTun { impl Drop for WinDivertTun { fn drop(&mut self) { - if let Ok(mut sender) = self.sender.lock() { - if let Err(e) = sender.close(windivert::CloseAction::Nothing) { - tracing::error!("WinDivertSender close failed: {:?}", e); - } + if let Ok(mut sender) = self.sender.lock() + && let Err(e) = sender.close(windivert::CloseAction::Nothing) + { + tracing::error!("WinDivertSender close failed: {:?}", e); } if let Err(e) = self.reader.shutdown() { tracing::error!("WinDivertReader shutdown failed: {:?}", e); @@ -94,8 +94,7 @@ impl WinDivertTun { // Layer: Network (0) // Priority: 0 let flags = WinDivertFlags::default().set_sniff(); - let reader = WinDivert::network(&filter, 0, flags) - .map_err(|e| io::Error::new(io::ErrorKind::Other, e))?; + let reader = WinDivert::network(&filter, 0, flags).map_err(io::Error::other)?; let reader = Arc::new(WinDivertReader::new(reader)); let reader_clone = reader.clone(); @@ -109,7 +108,7 @@ impl WinDivertTun { let mut eth_data = vec![0u8; 14 + data.len()]; // Set EtherType - if data.len() > 0 && data[0] >> 4 == 4 { + if !data.is_empty() && data[0] >> 4 == 4 { eth_data[12] = 0x08; eth_data[13] = 0x00; } else { @@ -118,12 +117,12 @@ impl WinDivertTun { } eth_data[14..].copy_from_slice(data); - if let Err(_) = tx.blocking_send(eth_data) { + if tx.blocking_send(eth_data).is_err() { break; } } - Err(_) => { - // log error? + Err(error) => { + tracing::error!(?error, "WinDivert recv failed"); break; } } @@ -133,8 +132,8 @@ impl WinDivertTun { // Sender: non-sniff, empty filter? // Use "false" to avoid capturing anything. // Flags: 0 - let sender = WinDivert::network("false", 0, WinDivertFlags::default()) - .map_err(|e| io::Error::new(io::ErrorKind::Other, e))?; + let sender = + WinDivert::network("false", 0, WinDivertFlags::default()).map_err(io::Error::other)?; Ok(Self { recv_queue: Mutex::new(rx), @@ -171,21 +170,15 @@ impl stack::Tun for WinDivertTun { let ip_data = &packet[14..]; let Ok(sender) = self.sender.try_lock() else { - return Err(std::io::Error::new( - std::io::ErrorKind::Other, - "WinDivert sender lock failed", - )); + return Err(std::io::Error::other("WinDivert sender lock failed")); }; let mut pkt = unsafe { WinDivertPacket::::new(ip_data.to_vec()) }; pkt.address.set_outbound(true); - sender.send(&pkt).map_err(|e| { - std::io::Error::new( - std::io::ErrorKind::Other, - format!("WinDivert send failed: {}", e), - ) - })?; + sender + .send(&pkt) + .map_err(|e| std::io::Error::other(format!("WinDivert send failed: {}", e)))?; Ok(()) }