Browse Source

Handle poll interrupt gracefully

pull/16/head
B. Blechschmidt 3 years ago
parent
commit
8135ed3dce
  1. 22
      src/tun2proxy.rs

22
src/tun2proxy.rs

@ -673,15 +673,23 @@ impl<'a> TunToProxy<'a> {
let mut events = Events::with_capacity(1024);
loop {
self.poll.poll(&mut events, None)?;
for event in events.iter() {
match event.token() {
TCP_TOKEN => self.tun_event(event)?,
UDP_TOKEN => self.udp_event(event),
_ => self.mio_socket_event(event)?,
match self.poll.poll(&mut events, None) {
Ok(()) => {
for event in events.iter() {
match event.token() {
TCP_TOKEN => self.tun_event(event)?,
UDP_TOKEN => self.udp_event(event),
_ => self.mio_socket_event(event)?,
}
}
self.send_to_smoltcp()?;
}
Err(e) => {
if e.kind() != std::io::ErrorKind::Interrupted {
return Err(e.into())
}
}
}
self.send_to_smoltcp()?;
}
}
}

Loading…
Cancel
Save