chore: clippy fix some code on Windows (#2106)

This commit is contained in:
Luna Yao
2026-04-12 16:13:58 +02:00
committed by GitHub
parent 83010861ba
commit c6cb1a77d0
5 changed files with 28 additions and 37 deletions
+1 -1
View File
@@ -345,7 +345,7 @@ fn add_protocol_firewall_rules(
SafeArrayPutElement( SafeArrayPutElement(
interface_array, interface_array,
&index as *const _ as *const i32, &index as *const _,
&variant_interface as *const _ as *const std::ffi::c_void, &variant_interface as *const _ as *const std::ffi::c_void,
)?; )?;
+4 -5
View File
@@ -448,15 +448,14 @@ impl RegistryManager {
for guid in network_key.enum_keys().map_while(Result::ok) { 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) { if let Ok(guid_key) = network_key.open_subkey_with_flags(&guid, KEY_READ) {
// 检查 Connection/Name 是否匹配目标接口名 // 检查 Connection/Name 是否匹配目标接口名
if let Ok(conn_key) = guid_key.open_subkey_with_flags("Connection", KEY_READ) { if let Ok(conn_key) = guid_key.open_subkey_with_flags("Connection", KEY_READ)
if let Ok(name) = conn_key.get_value::<String, _>("Name") { && let Ok(name) = conn_key.get_value::<String, _>("Name")
if name == interface_name { && name == interface_name
{
return Ok(guid); return Ok(guid);
} }
} }
} }
}
}
// 如果没有找到对应的接口 // 如果没有找到对应的接口
Err(io::Error::new( Err(io::Error::new(
@@ -202,15 +202,14 @@ mod tests {
.arg("1") .arg("1")
.arg("-w") .arg("-w")
.arg("100") .arg("100")
.arg(&fake_ip.to_string()) .arg(fake_ip.to_string())
.output() .output()
.await .await
&& o.status.success()
{ {
if o.status.success() {
break; break;
} }
} }
}
check_dns_record(&fake_ip, "test1.et.net", "10.144.144.10").await; check_dns_record(&fake_ip, "test1.et.net", "10.144.144.10").await;
+3 -3
View File
@@ -491,11 +491,11 @@ mod win_service_manager {
{ {
Ok(s) => s, Ok(s) => s,
Err(e) => { Err(e) => {
if let windows_service::Error::Winapi(ref win_err) = e { if let windows_service::Error::Winapi(ref win_err) = e
if win_err.raw_os_error() == Some(0x424) { && win_err.raw_os_error() == Some(0x424)
{
return Ok(ServiceStatus::NotInstalled); return Ok(ServiceStatus::NotInstalled);
} }
}
return Err(io::Error::other(e)); return Err(io::Error::other(e));
} }
}; };
@@ -68,11 +68,11 @@ pub struct WinDivertTun {
impl Drop for WinDivertTun { impl Drop for WinDivertTun {
fn drop(&mut self) { fn drop(&mut self) {
if let Ok(mut sender) = self.sender.lock() { if let Ok(mut sender) = self.sender.lock()
if let Err(e) = sender.close(windivert::CloseAction::Nothing) { && let Err(e) = sender.close(windivert::CloseAction::Nothing)
{
tracing::error!("WinDivertSender close failed: {:?}", e); tracing::error!("WinDivertSender close failed: {:?}", e);
} }
}
if let Err(e) = self.reader.shutdown() { if let Err(e) = self.reader.shutdown() {
tracing::error!("WinDivertReader shutdown failed: {:?}", e); tracing::error!("WinDivertReader shutdown failed: {:?}", e);
} }
@@ -94,8 +94,7 @@ impl WinDivertTun {
// Layer: Network (0) // Layer: Network (0)
// Priority: 0 // Priority: 0
let flags = WinDivertFlags::default().set_sniff(); let flags = WinDivertFlags::default().set_sniff();
let reader = WinDivert::network(&filter, 0, flags) let reader = WinDivert::network(&filter, 0, flags).map_err(io::Error::other)?;
.map_err(|e| io::Error::new(io::ErrorKind::Other, e))?;
let reader = Arc::new(WinDivertReader::new(reader)); let reader = Arc::new(WinDivertReader::new(reader));
let reader_clone = reader.clone(); let reader_clone = reader.clone();
@@ -109,7 +108,7 @@ impl WinDivertTun {
let mut eth_data = vec![0u8; 14 + data.len()]; let mut eth_data = vec![0u8; 14 + data.len()];
// Set EtherType // Set EtherType
if data.len() > 0 && data[0] >> 4 == 4 { if !data.is_empty() && data[0] >> 4 == 4 {
eth_data[12] = 0x08; eth_data[12] = 0x08;
eth_data[13] = 0x00; eth_data[13] = 0x00;
} else { } else {
@@ -118,12 +117,12 @@ impl WinDivertTun {
} }
eth_data[14..].copy_from_slice(data); eth_data[14..].copy_from_slice(data);
if let Err(_) = tx.blocking_send(eth_data) { if tx.blocking_send(eth_data).is_err() {
break; break;
} }
} }
Err(_) => { Err(error) => {
// log error? tracing::error!(?error, "WinDivert recv failed");
break; break;
} }
} }
@@ -133,8 +132,8 @@ impl WinDivertTun {
// Sender: non-sniff, empty filter? // Sender: non-sniff, empty filter?
// Use "false" to avoid capturing anything. // Use "false" to avoid capturing anything.
// Flags: 0 // Flags: 0
let sender = WinDivert::network("false", 0, WinDivertFlags::default()) let sender =
.map_err(|e| io::Error::new(io::ErrorKind::Other, e))?; WinDivert::network("false", 0, WinDivertFlags::default()).map_err(io::Error::other)?;
Ok(Self { Ok(Self {
recv_queue: Mutex::new(rx), recv_queue: Mutex::new(rx),
@@ -171,21 +170,15 @@ impl stack::Tun for WinDivertTun {
let ip_data = &packet[14..]; let ip_data = &packet[14..];
let Ok(sender) = self.sender.try_lock() else { let Ok(sender) = self.sender.try_lock() else {
return Err(std::io::Error::new( return Err(std::io::Error::other("WinDivert sender lock failed"));
std::io::ErrorKind::Other,
"WinDivert sender lock failed",
));
}; };
let mut pkt = unsafe { WinDivertPacket::<layer::NetworkLayer>::new(ip_data.to_vec()) }; let mut pkt = unsafe { WinDivertPacket::<layer::NetworkLayer>::new(ip_data.to_vec()) };
pkt.address.set_outbound(true); pkt.address.set_outbound(true);
sender.send(&pkt).map_err(|e| { sender
std::io::Error::new( .send(&pkt)
std::io::ErrorKind::Other, .map_err(|e| std::io::Error::other(format!("WinDivert send failed: {}", e)))?;
format!("WinDivert send failed: {}", e),
)
})?;
Ok(()) Ok(())
} }