From bcb757b904b26857d7d66500a1e76e717746862e Mon Sep 17 00:00:00 2001 From: szymon Date: Wed, 19 Aug 2026 11:09:46 +0200 Subject: [PATCH] fix: server allowing sending ready while hands not shaken --- src/network/client.rs | 7 +++++-- src/network/network_identity.rs | 2 ++ src/network/server.rs | 13 +++++++++++-- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/network/client.rs b/src/network/client.rs index a397473..4d6eaea 100644 --- a/src/network/client.rs +++ b/src/network/client.rs @@ -32,8 +32,11 @@ pub struct Client { } impl Client { - pub async fn new() -> Option { - let settings = ClientSettings::new(); + pub async fn new(settings: Option) -> Option { + let Some(settings) = settings.or(Some(ClientSettings::new())) else { + error!("Could not load client settings"); + return None; + }; let (conn_sender, conn_reciever) = mpsc::channel::<(SocketAddr, Message)>(1024); diff --git a/src/network/network_identity.rs b/src/network/network_identity.rs index 02ace06..3ef7dbe 100644 --- a/src/network/network_identity.rs +++ b/src/network/network_identity.rs @@ -33,6 +33,7 @@ pub struct NetworkServerIdentity { // writing this since 10 a.m. and it's 9 p.m. already) pub identity: NetworkIdentity, pub sender: Sender>, + pub is_handshaken: bool, } impl NetworkServerIdentity { @@ -40,6 +41,7 @@ impl NetworkServerIdentity { Self { identity: NetworkIdentity::default(), sender, + is_handshaken: false, } } } diff --git a/src/network/server.rs b/src/network/server.rs index 71519b3..bf6f8dd 100644 --- a/src/network/server.rs +++ b/src/network/server.rs @@ -186,7 +186,7 @@ impl Server { ClientMessage::SignalReadiness => { self.handle_readiness(addr).await - }, + } ClientMessage::RequestCapture { capture_path } => { self.process_capture(capture_path).await; @@ -282,7 +282,8 @@ impl Server { return; }; - identity.identity.name = fixed_name + identity.identity.name = fixed_name; + identity.is_handshaken = true; } async fn process_capture(&mut self, capture_path: CapturePath) { @@ -313,6 +314,14 @@ impl Server { } async fn handle_readiness(&mut self, addr: SocketAddr) { + if !self.connections[&addr].is_handshaken { + warn!( + "Connection: {} tried sending readiness, but it have not shaken hands. Ignoring...", + addr + ); + return; + } + self.state.ready_count += 1; info!( "{} signaled readiness. Currently ready: {}/{}",