fix: listener

This commit is contained in:
Michel de Graaf
2025-11-11 14:53:40 +01:00
parent 2584428170
commit f6921224c6
3 changed files with 34 additions and 4 deletions
+30 -1
View File
@@ -232,7 +232,26 @@ impl PeerActor {
fn process_read(&mut self) { fn process_read(&mut self) {
let username = self.peer.read().unwrap().username.clone(); let username = self.peer.read().unwrap().username.clone();
trace!("[peer_actor:{}] process_read() called", username); 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 // Try to read more data from the socket first
{ {
let stream = match self.stream.as_mut() { 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 // Extract all available messages from the buffer
let username = self.peer.read().unwrap().username.clone(); let username = self.peer.read().unwrap().username.clone();
@@ -310,7 +340,6 @@ impl PeerActor {
// Process any messages that were dispatched // Process any messages that were dispatched
trace!("[peer_actor:{}] Processing dispatcher messages", username); trace!("[peer_actor:{}] Processing dispatcher messages", username);
self.process_dispatcher_messages(); self.process_dispatcher_messages();
trace!("[peer_actor:{}] process_read() completed", username);
} }
/// Handle writing a message to the socket /// Handle writing a message to the socket
+1 -1
View File
@@ -13,7 +13,7 @@ fn main() {
client.connect(); client.connect();
match client.login() { match client.login() {
Ok(_) => { Ok(_) => {
match client.search("michel test file", Duration::from_secs(4)) { match client.search("michel test file", Duration::from_secs(10)) {
Ok(results) => { Ok(results) => {
if let Some(result) = if let Some(result) =
results.iter().find(|r| !r.files.is_empty()) results.iter().find(|r| !r.files.is_empty())
+3 -2
View File
@@ -213,8 +213,9 @@ fn handle_incoming_connection(stream: TcpStream, context: ConnectionContext) {
); );
let peer = Peer::new( let peer = Peer::new(
init_data.username.clone(), format!("{}:direct", init_data.username), // Add direct suffix to distinguish from regular peers
ConnectionType::P, // init_data.username.clone(),
init_data.connection_type.clone(),
peer_ip.clone(), peer_ip.clone(),
peer_port.into(), peer_port.into(),
None, None,