Moved check for spurious wakeup, and added registry.reregister for socket. May help further.
This commit is contained in:
+6
-5
@@ -72,7 +72,7 @@ impl Network {
|
|||||||
|
|
||||||
// Process each event.
|
// Process each event.
|
||||||
for event in events.iter() {
|
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.
|
// We can use the token we previously provided to `register` to determine for which socket the event is.
|
||||||
match event.token() {
|
match event.token() {
|
||||||
SERVER => {
|
SERVER => {
|
||||||
@@ -169,10 +169,6 @@ fn handle_connection_event(context: Arc<Mutex<Context>>, peers: &mut Peers, regi
|
|||||||
if event.is_error() || (event.is_read_closed() && event.is_write_closed()) {
|
if event.is_error() || (event.is_read_closed() && event.is_write_closed()) {
|
||||||
return false;
|
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() {
|
if event.is_readable() {
|
||||||
let data = {
|
let data = {
|
||||||
@@ -184,6 +180,11 @@ fn handle_connection_event(context: Arc<Mutex<Context>>, peers: &mut Peers, regi
|
|||||||
}
|
}
|
||||||
Some(peer) => {
|
Some(peer) => {
|
||||||
let mut stream = peer.get_stream();
|
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)
|
read_message(&mut stream)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user