Skip to content

Commit d288672

Browse files
committed
refactor: apply backpressure if relay disco recv queue fills up
1 parent 90a7991 commit d288672

File tree

1 file changed

+4
-4
lines changed

1 file changed

+4
-4
lines changed

iroh/src/magicsock/relay_actor.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -618,7 +618,7 @@ impl ActiveRelayActor {
618618
};
619619
match msg {
620620
Ok(msg) => {
621-
self.handle_relay_msg(msg, &mut state);
621+
self.handle_relay_msg(msg, &mut state).await;
622622
// reset the ping timer, we have just received a message
623623
ping_interval.reset();
624624
},
@@ -641,7 +641,7 @@ impl ActiveRelayActor {
641641
res.map_err(|err| state.map_err(err))
642642
}
643643

644-
fn handle_relay_msg(&mut self, msg: ReceivedMessage, state: &mut ConnectedRelayState) {
644+
async fn handle_relay_msg(&mut self, msg: ReceivedMessage, state: &mut ConnectedRelayState) {
645645
match msg {
646646
ReceivedMessage::ReceivedPacket {
647647
remote_node_id,
@@ -676,7 +676,7 @@ impl ActiveRelayActor {
676676
relay_url: datagram.url.clone(),
677677
relay_remote_node_id: datagram.src,
678678
};
679-
if let Err(err) = self.relay_disco_recv.try_send(message) {
679+
if let Err(err) = self.relay_disco_recv.send(message).await {
680680
warn!("Dropping received relay disco packet: {err:#}");
681681
}
682682
}
@@ -774,7 +774,7 @@ impl ActiveRelayActor {
774774
break Err(anyhow!("Stream closed by server."));
775775
};
776776
match msg {
777-
Ok(msg) => self.handle_relay_msg(msg, state),
777+
Ok(msg) => self.handle_relay_msg(msg, state).await,
778778
Err(err) => break Err(anyhow!("Client stream read error: {err:#}")),
779779
}
780780
}

0 commit comments

Comments
 (0)