Fix interrupt handling. Fix double server pause/resume
@@ -223,7 +223,7 @@ impl Accept {
loop {
if let Err(e) = self.poll.poll(&mut events, None) {
match e.kind() {
- io::ErrorKind::Interrupted => continue,
+ io::ErrorKind::Interrupted => {}
_ => panic!("Poll error: {}", e),
}
}
@@ -286,13 +286,16 @@ impl Accept {
Some(WakerInterest::Pause) => {
drop(guard);
+ if !self.paused {
self.paused = true;
self.deregister_all(sockets);
}
+ }
Some(WakerInterest::Resume) => {
drop(guard);
+ if self.paused {
self.paused = false;
sockets.iter_mut().for_each(|info| {
@@ -301,8 +304,11 @@ impl Accept {
self.accept_all(sockets);
}
+ }
Some(WakerInterest::Stop) => {
+ if !self.paused {
self.deregister_all(sockets);
+ }
return true;
}
