From 71105d978346560e38873ed45ec862e0f154fb1a Mon Sep 17 00:00:00 2001 From: szymon Date: Sun, 16 Aug 2026 17:53:42 +0200 Subject: [PATCH] fix: dont freak out when client loses connection --- src/bin/client.rs | 4 ++++ src/network/client.rs | 3 +++ src/network/connection.rs | 11 +++++++++++ 3 files changed, 18 insertions(+) diff --git a/src/bin/client.rs b/src/bin/client.rs index 8e7604d..7a58ae6 100644 --- a/src/bin/client.rs +++ b/src/bin/client.rs @@ -22,6 +22,10 @@ async fn main() -> Result<(), Box> { break; } + if buffer == "/test\n" { + buffer = String::from("A").repeat(1024 * 1024 * 2); + } + client.send_text_message(buffer.clone()).await; buffer.clear(); } diff --git a/src/network/client.rs b/src/network/client.rs index f33d1f8..481b1dd 100644 --- a/src/network/client.rs +++ b/src/network/client.rs @@ -87,6 +87,9 @@ impl Client { ServerMessage::BroadcastCurrentTurn { active_player } => todo!(), ServerMessage::GameEnd { result } => todo!(), } + } else { + error!("Connection broken"); + break; } } }); diff --git a/src/network/connection.rs b/src/network/connection.rs index 9f01af8..c6f56f3 100644 --- a/src/network/connection.rs +++ b/src/network/connection.rs @@ -162,6 +162,17 @@ where } async fn read_content(&mut self, size_to_read: u32) -> Result<(), io::Error> { + let max_size = 1024 * 1024 * 2; + + if size_to_read > max_size { + error!( + "Message sent exeeds the limit. Sent {}, max: {}", + size_to_read, max_size + ); + self.tcp = None; + return Err(io::ErrorKind::InvalidData.into()); + } + let mut buff: Vec = vec![0; size_to_read as usize]; let Some(tcp) = &mut self.tcp else {