mirror of
https://github.com/tun2proxy/tun2proxy.git
synced 2025-04-22 23:09:09 +00:00
refine code
This commit is contained in:
parent
03b6e01d4a
commit
398d64eb64
1 changed files with 9 additions and 4 deletions
|
@ -105,16 +105,18 @@ impl WinTunInterface {
|
||||||
let reader_thread = std::thread::spawn(move || {
|
let reader_thread = std::thread::spawn(move || {
|
||||||
let block = || -> Result<(), Box<dyn std::error::Error>> {
|
let block = || -> Result<(), Box<dyn std::error::Error>> {
|
||||||
loop {
|
loop {
|
||||||
|
// read data from tunnel interface
|
||||||
let packet = reader_session.receive_blocking()?;
|
let packet = reader_session.receive_blocking()?;
|
||||||
let bytes = packet.bytes();
|
let bytes = packet.bytes();
|
||||||
|
|
||||||
|
// write data to named pipe_server
|
||||||
let result = { pipe_client_clone.lock()?.write(bytes) };
|
let result = { pipe_client_clone.lock()?.write(bytes) };
|
||||||
match result {
|
match result {
|
||||||
Ok(_) => {}
|
Ok(_) => {}
|
||||||
Err(err) if err.kind() == io::ErrorKind::WouldBlock => {
|
Err(err) if err.kind() == io::ErrorKind::WouldBlock => {
|
||||||
log::trace!("Wintun reader_thread: tx failed due to WouldBlock")
|
log::trace!("Wintun pipe_client write data len {} WouldBlock", bytes.len())
|
||||||
}
|
}
|
||||||
Err(err) => log::error!("{}", err),
|
Err(err) => log::error!("Wintun pipe_client write data len {} error \"{}\"", bytes.len(), err),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -145,10 +147,12 @@ impl WinTunInterface {
|
||||||
.map_err(|e| io::Error::new(io::ErrorKind::Other, e.to_string()))?;
|
.map_err(|e| io::Error::new(io::ErrorKind::Other, e.to_string()))?;
|
||||||
let mut buffer = vec![0; self.mtu];
|
let mut buffer = vec![0; self.mtu];
|
||||||
loop {
|
loop {
|
||||||
|
// some data arieved to pipe_client from pipe_server
|
||||||
match reader.read(&mut buffer[..]) {
|
match reader.read(&mut buffer[..]) {
|
||||||
Ok(len) => match self.wintun_session.allocate_send_packet(len as u16) {
|
Ok(len) => match self.wintun_session.allocate_send_packet(len as u16) {
|
||||||
Ok(mut write_pack) => {
|
Ok(mut write_pack) => {
|
||||||
write_pack.bytes_mut().copy_from_slice(&buffer[..len]);
|
write_pack.bytes_mut().copy_from_slice(&buffer[..len]);
|
||||||
|
// write data to tunnel interface
|
||||||
self.wintun_session.send_packet(write_pack);
|
self.wintun_session.send_packet(write_pack);
|
||||||
}
|
}
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
|
@ -309,9 +313,9 @@ impl phy::TxToken for TxToken {
|
||||||
match self.pipe_server.borrow_mut().write(&buffer[..]) {
|
match self.pipe_server.borrow_mut().write(&buffer[..]) {
|
||||||
Ok(_) => {}
|
Ok(_) => {}
|
||||||
Err(err) if err.kind() == io::ErrorKind::WouldBlock => {
|
Err(err) if err.kind() == io::ErrorKind::WouldBlock => {
|
||||||
log::trace!("Wintun TxToken: tx failed due to WouldBlock")
|
log::trace!("Wintun TxToken: WouldBlock data len: {}", len)
|
||||||
}
|
}
|
||||||
Err(err) => log::error!("{}", err),
|
Err(err) => log::error!("Wintun TxToken data len {} error \"{}\"", len, err),
|
||||||
}
|
}
|
||||||
result
|
result
|
||||||
}
|
}
|
||||||
|
@ -375,6 +379,7 @@ pub(crate) fn set_interface_dns_settings(interface: GUID, dns: &[IpAddr]) -> io:
|
||||||
pub(crate) fn get_active_network_interface_gateways() -> io::Result<Vec<SocketAddr>> {
|
pub(crate) fn get_active_network_interface_gateways() -> io::Result<Vec<SocketAddr>> {
|
||||||
let mut addrs = vec![];
|
let mut addrs = vec![];
|
||||||
get_adapters_addresses(|adapter| {
|
get_adapters_addresses(|adapter| {
|
||||||
|
log::trace!("adapter: {:?}", unsafe { adapter.FriendlyName.to_string() });
|
||||||
if adapter.OperStatus == IfOperStatusUp && adapter.IfType == IF_TYPE_IEEE80211 {
|
if adapter.OperStatus == IfOperStatusUp && adapter.IfType == IF_TYPE_IEEE80211 {
|
||||||
let mut current_gateway = adapter.FirstGatewayAddress;
|
let mut current_gateway = adapter.FirstGatewayAddress;
|
||||||
while !current_gateway.is_null() {
|
while !current_gateway.is_null() {
|
||||||
|
|
Loading…
Add table
Reference in a new issue