From bc0726d3f9efdb9df1d9796af9b3481ab837f115 Mon Sep 17 00:00:00 2001 From: Revertron Date: Fri, 2 Apr 2021 13:19:33 +0200 Subject: [PATCH] Moved check for spurious wakeup, and added registry.reregister for socket. May help further. --- src/p2p/network.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/p2p/network.rs b/src/p2p/network.rs index 4d80467..79ee86d 100644 --- a/src/p2p/network.rs +++ b/src/p2p/network.rs @@ -72,7 +72,7 @@ impl Network { // Process each event. for event in events.iter() { - //trace!("Event for socket {} is {:?}", event.token().0, &event); + trace!("Event for socket {} is {:?}", event.token().0, &event); // We can use the token we previously provided to `register` to determine for which socket the event is. match event.token() { SERVER => { @@ -169,10 +169,6 @@ fn handle_connection_event(context: Arc>, peers: &mut Peers, regi if event.is_error() || (event.is_read_closed() && event.is_write_closed()) { return false; } - if event.is_readable() && event.is_read_closed() { - info!("Spurious wakeup for connection {}, ignoring", event.token().0); - return true; - } if event.is_readable() { let data = { @@ -184,6 +180,11 @@ fn handle_connection_event(context: Arc>, peers: &mut Peers, regi } Some(peer) => { let mut stream = peer.get_stream(); + if event.is_read_closed() { + info!("Spurious wakeup for connection {}, ignoring", token.0); + registry.reregister(stream, token, Interest::READABLE).unwrap(); + return true; + } read_message(&mut stream) } }