From a914780bbe572056ad834adef6392919b57614ae Mon Sep 17 00:00:00 2001 From: c0repwn3r Date: Thu, 13 Apr 2023 10:08:44 -0400 Subject: [PATCH] prevent the server from sending non-handshake packets to the client before the handshake is complete --- server/src/handler.rs | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/server/src/handler.rs b/server/src/handler.rs index 8f0f58290ebdb3ee88fd9d1fc4d3d49bbfde43ed..48a461cfff2c5c51c6248842b7d1d61d06b0120b 100644 --- a/server/src/handler.rs +++ b/server/src/handler.rs @@ -28,20 +28,26 @@ pub async fn handle_client(mgr: ClientManager, data: Arc>, r match msg { ClientHandlerMessage::Tick => {} // this intentionally does nothing, ClientHandlerMessage::ChatMessage { from, message } => { - send!(client_tx, &MessageS2C::Chat { - message, - from - }).await?; + if matches!(state, State::Play) { + send!(client_tx, &MessageS2C::Chat { + message, + from + }).await?; + } } ClientHandlerMessage::PlayersUpdate { players } => { - send!(client_tx, &MessageS2C::PlayersUpdate { - players - }).await?; + if matches!(state, State::Play) { + send!(client_tx, &MessageS2C::PlayersUpdate { + players + }).await?; + } } ClientHandlerMessage::PlanetData { planets } => { - send!(client_tx, &MessageS2C::PlanetData { - planets - }).await?; + if matches!(state, State::Play) { + send!(client_tx, &MessageS2C::PlanetData { + planets + }).await?; + } } } } else { @@ -103,6 +109,7 @@ pub async fn handle_client(mgr: ClientManager, data: Arc>, r given_username: requested_username.clone(), next_state, }).await?; + state = next_state; username = requested_username;