mirror of
https://github.com/tun2proxy/tun2proxy.git
synced 2025-06-08 15:47:44 +00:00
Handle poll interrupt gracefully
This commit is contained in:
parent
280073ebfe
commit
8135ed3dce
1 changed files with 15 additions and 7 deletions
|
@ -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…
Add table
Add a link
Reference in a new issue