From f6921224c6792ea090d1f93220b5077aa24dacfb Mon Sep 17 00:00:00 2001 From: Michel de Graaf Date: Mon, 10 Nov 2025 15:48:02 +0100 Subject: [PATCH] fix: listener --- src/actor/peer_actor.rs | 31 ++++++++++++++++++++++++++++++- src/main.rs | 2 +- src/peer/listen.rs | 5 +++-- 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/actor/peer_actor.rs b/src/actor/peer_actor.rs index b0efbe5..45cede8 100644 --- a/src/actor/peer_actor.rs +++ b/src/actor/peer_actor.rs @@ -232,7 +232,26 @@ impl PeerActor { fn process_read(&mut self) { let username = self.peer.read().unwrap().username.clone(); trace!("[peer_actor:{}] process_read() called", username); + if self.reader.buffer_len() > 0 { + trace!( + "[peer_actor:{}] reader buffer has {} bytes", + username, + self.reader.buffer_len() + ); + self.extract_and_process_messages(); // This will process all messages in the buffer + } + trace!("[peer_actor:{}] Trying to read from socket", username); + trace!( + "[peer_actor:{}] reader buffer has {} bytes", + username, + self.reader.buffer_len() + ); + trace!( + "[peer_actor:{}] reader buffer has {:?}", + username, + self.reader.get_buffer() + ); // Try to read more data from the socket first { let stream = match self.stream.as_mut() { @@ -264,6 +283,17 @@ impl PeerActor { } } } + trace!("[peer_actor:{}] After reading from socket", username); + self.extract_and_process_messages(); // This will process all messages in the buffer + trace!("[peer_actor:{}] process_read() completed", username); + } + + fn extract_and_process_messages(&mut self) { + let username = self.peer.read().unwrap().username.clone(); + trace!( + "[peer_actor:{}] Extracting and processing messages", + username + ); // Extract all available messages from the buffer let username = self.peer.read().unwrap().username.clone(); @@ -310,7 +340,6 @@ impl PeerActor { // Process any messages that were dispatched trace!("[peer_actor:{}] Processing dispatcher messages", username); self.process_dispatcher_messages(); - trace!("[peer_actor:{}] process_read() completed", username); } /// Handle writing a message to the socket diff --git a/src/main.rs b/src/main.rs index 64c7710..5e68ab7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -13,7 +13,7 @@ fn main() { client.connect(); match client.login() { Ok(_) => { - match client.search("michel test file", Duration::from_secs(4)) { + match client.search("michel test file", Duration::from_secs(10)) { Ok(results) => { if let Some(result) = results.iter().find(|r| !r.files.is_empty()) diff --git a/src/peer/listen.rs b/src/peer/listen.rs index 789a82f..1b922be 100644 --- a/src/peer/listen.rs +++ b/src/peer/listen.rs @@ -213,8 +213,9 @@ fn handle_incoming_connection(stream: TcpStream, context: ConnectionContext) { ); let peer = Peer::new( - init_data.username.clone(), - ConnectionType::P, + format!("{}:direct", init_data.username), // Add direct suffix to distinguish from regular peers + // init_data.username.clone(), + init_data.connection_type.clone(), peer_ip.clone(), peer_port.into(), None,