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

retry on EINTR in accept loop (#264)

Co-authored-by: lishuo <lishuo.03@bytedance.com>
This commit is contained in:
shuo 2021-02-04 18:20:37 +08:00 committed by GitHub
parent 4a8693d000
commit db3385e865
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 12 additions and 3 deletions

View File

@ -2,8 +2,10 @@
## Unreleased - 2021-xx-xx ## Unreleased - 2021-xx-xx
* Hidden `ServerBuilder::start` method has been removed. Use `ServerBuilder::run`. [#246] * Hidden `ServerBuilder::start` method has been removed. Use `ServerBuilder::run`. [#246]
* Add retry for EINTR(`io::Interrupted`) in `Accept`'s poll loop. [#264]
[#246]: https://github.com/actix/actix-net/pull/246 [#246]: https://github.com/actix/actix-net/pull/246
[#264]: https://github.com/actix/actix-net/pull/264
## 2.0.0-beta.2 - 2021-01-03 ## 2.0.0-beta.2 - 2021-01-03

View File

@ -161,9 +161,16 @@ impl Accept {
let mut events = mio::Events::with_capacity(128); let mut events = mio::Events::with_capacity(128);
loop { loop {
self.poll if let Err(e) = self.poll.poll(&mut events, None) {
.poll(&mut events, None) match e.kind() {
.unwrap_or_else(|e| panic!("Poll error: {}", e)); std::io::ErrorKind::Interrupted => {
continue;
}
_ => {
panic!("Poll error: {}", e);
}
}
}
for event in events.iter() { for event in events.iter() {
let token = event.token(); let token = event.token();