fix: listener
This commit is contained in:
+30
-1
@@ -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
|
||||
|
||||
+1
-1
@@ -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())
|
||||
|
||||
+3
-2
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user