From 0e3313b05612dd7d32ca4a683d6bb754c11c6bc5 Mon Sep 17 00:00:00 2001 From: Nova Date: Wed, 13 Jul 2022 11:17:47 -0400 Subject: [PATCH] fix(event loop): error in poll when other threads paused due to EINTR --- src/core/eventloop.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/core/eventloop.rs b/src/core/eventloop.rs index 549b18c..86a70fa 100644 --- a/src/core/eventloop.rs +++ b/src/core/eventloop.rs @@ -52,7 +52,14 @@ impl EventLoop { poll.registry() .register(&mut stop_receiver, STOP, Interest::READABLE)?; 'event_loop: loop { - poll.poll(&mut events, timeout)?; + match poll.poll(&mut events, timeout) { + Err(e) => { + if e.kind() == std::io::ErrorKind::Interrupted { + continue 'event_loop; + } + } + _ => {} + } for event in &events { match event.token() { LISTENER => EventLoop::accept_client(&socket, &mut clients, &poll)?,