From fb4aba9bb7455d14b47ae7728f636b789d0bd91d Mon Sep 17 00:00:00 2001 From: Capucho Date: Sun, 8 Mar 2020 08:54:29 +0000 Subject: [PATCH] Fix the spam on disconnect --- client/src/lib.rs | 5 +---- common/src/msg/mod.rs | 1 - server/src/sys/message.rs | 9 +-------- 3 files changed, 2 insertions(+), 13 deletions(-) diff --git a/client/src/lib.rs b/client/src/lib.rs index c44c787e6b..aa2447ce30 100644 --- a/client/src/lib.rs +++ b/client/src/lib.rs @@ -199,10 +199,7 @@ impl Client { } /// Send disconnect message to the server - pub fn request_logout(&mut self) { - self.postbox.send_message(ClientMsg::Disconnect); - self.client_state = ClientState::Disconnected; - } + pub fn request_logout(&mut self) { self.postbox.send_message(ClientMsg::Disconnect); } /// Request a state transition to `ClientState::Registered` from an ingame /// state. diff --git a/common/src/msg/mod.rs b/common/src/msg/mod.rs index 411763607f..1baee67e15 100644 --- a/common/src/msg/mod.rs +++ b/common/src/msg/mod.rs @@ -16,7 +16,6 @@ pub enum ClientState { Registered, Spectator, Character, - Disconnected, } pub const MAX_BYTES_CHAT_MSG: usize = 256; diff --git a/server/src/sys/message.rs b/server/src/sys/message.rs index b040b20a2d..d86101687e 100644 --- a/server/src/sys/message.rs +++ b/server/src/sys/message.rs @@ -91,7 +91,7 @@ impl<'a> System<'a> for Sys { || client.postbox.error().is_some() // Postbox error { - disconnect = true; + server_emitter.emit(ServerEvent::ClientDisconnect(entity)); } else if time - client.last_ping > CLIENT_TIMEOUT * 0.5 { // Try pinging the client if the timeout is nearing. client.postbox.send_message(ServerMsg::Ping); @@ -111,7 +111,6 @@ impl<'a> System<'a> for Sys { server_emitter.emit(ServerEvent::ExitIngame { entity }); }, ClientState::Pending => {}, - ClientState::Disconnected => unreachable!(), }, // Request spectator state ClientMsg::Spectate => match client.client_state { @@ -122,7 +121,6 @@ impl<'a> System<'a> for Sys { client.allow_state(ClientState::Spectator) }, ClientState::Pending => {}, - ClientState::Disconnected => unreachable!(), }, // Valid player ClientMsg::Register { player, password } if player.is_valid() => { @@ -189,7 +187,6 @@ impl<'a> System<'a> for Sys { }, ClientState::Character => client.error_state(RequestStateError::Already), ClientState::Pending => {}, - ClientState::Disconnected => unreachable!(), }, ClientMsg::ControllerInputs(inputs) => match client.client_state { ClientState::Connected @@ -203,7 +200,6 @@ impl<'a> System<'a> for Sys { } }, ClientState::Pending => {}, - ClientState::Disconnected => unreachable!(), }, ClientMsg::ControlEvent(event) => match client.client_state { ClientState::Connected @@ -217,7 +213,6 @@ impl<'a> System<'a> for Sys { } }, ClientState::Pending => {}, - ClientState::Disconnected => unreachable!(), }, ClientMsg::ChatMsg { message } => match client.client_state { ClientState::Connected => client.error_state(RequestStateError::Impossible), @@ -232,7 +227,6 @@ impl<'a> System<'a> for Sys { ), }, ClientState::Pending => {}, - ClientState::Disconnected => unreachable!(), }, ClientMsg::PlayerPhysics { pos, vel, ori } => match client.client_state { ClientState::Character => { @@ -273,7 +267,6 @@ impl<'a> System<'a> for Sys { } }, ClientState::Pending => {}, - ClientState::Disconnected => unreachable!(), }, // Always possible. ClientMsg::Ping => client.postbox.send_message(ServerMsg::Pong),