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