diff -r 56831f466d1d -r 455865ccd36c rust/hedgewars-server/src/server/network.rs --- a/rust/hedgewars-server/src/server/network.rs Fri Jan 25 06:46:13 2019 +0100 +++ b/rust/hedgewars-server/src/server/network.rs Sat Feb 02 15:06:39 2019 +0300 @@ -16,7 +16,7 @@ use netbuf; use slab::Slab; -use super::{core::HWServer, coretypes::ClientId, io::FileServerIO}; +use super::{core::HWServer, coretypes::ClientId, handlers, io::FileServerIO}; use crate::{ protocol::{messages::*, ProtocolDecoder}, utils, @@ -178,7 +178,7 @@ let result = loop { match buf_out.write_to(destination) { Ok(bytes) if buf_out.is_empty() || bytes == 0 => { - break Ok(((), NetworkClientState::Idle)) + break Ok(((), NetworkClientState::Idle)); } Ok(_) => (), Err(ref error) @@ -406,10 +406,15 @@ Ok((Vec::new(), NetworkClientState::Idle)) }; + let mut response = handlers::Response::new(client_id); + match messages { Ok((messages, state)) => { for message in messages { - self.server.handle_msg(client_id, message); + debug!("Handling message {:?} for client {}", message, client_id); + if self.server.clients.contains(client_id) { + handlers::handle(&mut self.server, client_id, &mut response, message); + } } match state { NetworkClientState::NeedsRead => {