1
0
mirror of https://github.com/fafhrd91/actix-net synced 2024-11-24 00:01:11 +01:00

Fix interrupt handling. Fix double server pause/resume (#353)

This commit is contained in:
fakeshadow 2021-04-30 20:42:25 +08:00 committed by GitHub
parent e4d4ae21ee
commit 983abec77d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -223,7 +223,7 @@ impl Accept {
loop { loop {
if let Err(e) = self.poll.poll(&mut events, None) { if let Err(e) = self.poll.poll(&mut events, None) {
match e.kind() { match e.kind() {
io::ErrorKind::Interrupted => continue, io::ErrorKind::Interrupted => {}
_ => panic!("Poll error: {}", e), _ => panic!("Poll error: {}", e),
} }
} }
@ -286,23 +286,29 @@ impl Accept {
Some(WakerInterest::Pause) => { Some(WakerInterest::Pause) => {
drop(guard); drop(guard);
self.paused = true; if !self.paused {
self.paused = true;
self.deregister_all(sockets); self.deregister_all(sockets);
}
} }
Some(WakerInterest::Resume) => { Some(WakerInterest::Resume) => {
drop(guard); drop(guard);
self.paused = false; if self.paused {
self.paused = false;
sockets.iter_mut().for_each(|info| { sockets.iter_mut().for_each(|info| {
self.register_logged(info); self.register_logged(info);
}); });
self.accept_all(sockets); self.accept_all(sockets);
}
} }
Some(WakerInterest::Stop) => { Some(WakerInterest::Stop) => {
self.deregister_all(sockets); if !self.paused {
self.deregister_all(sockets);
}
return true; return true;
} }