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); let mut events = Events::with_capacity(1024);
loop { loop {
self.poll.poll(&mut events, None)?; match self.poll.poll(&mut events, None) {
for event in events.iter() { Ok(()) => {
match event.token() { for event in events.iter() {
TCP_TOKEN => self.tun_event(event)?, match event.token() {
UDP_TOKEN => self.udp_event(event), TCP_TOKEN => self.tun_event(event)?,
_ => self.mio_socket_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