From 0bfa947d6eccf61f3fb49a8973b45fccfa772008 Mon Sep 17 00:00:00 2001 From: lishuo Date: Wed, 3 Feb 2021 21:43:40 +0800 Subject: [PATCH] retry on EINTR in accept loop --- actix-server/src/accept.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/actix-server/src/accept.rs b/actix-server/src/accept.rs index a52184d9..89f957a1 100644 --- a/actix-server/src/accept.rs +++ b/actix-server/src/accept.rs @@ -161,9 +161,13 @@ impl Accept { let mut events = mio::Events::with_capacity(128); loop { - self.poll - .poll(&mut events, None) - .unwrap_or_else(|e| panic!("Poll error: {}", e)); + if let Err(e) = self.poll.poll(&mut events, None) { + if matches!(e.kind(), std::io::ErrorKind::Interrupted) { + continue; + } else { + panic!("Poll error: {}", e); + } + } for event in events.iter() { let token = event.token();