Skip to content

Commit 2f94cb4

Browse files
committed
fix: first split then test for disco
1 parent bd9dda0 commit 2f94cb4

File tree

1 file changed

+21
-22
lines changed

1 file changed

+21
-22
lines changed

iroh/src/magicsock/relay_actor.rs

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -662,29 +662,28 @@ impl ActiveRelayActor {
662662
state.last_packet_src = Some(remote_node_id);
663663
state.nodes_present.insert(remote_node_id);
664664
}
665-
match crate::disco::source_and_box_bytes(&data) {
666-
Some((source, sealed_box)) => {
667-
if remote_node_id != source {
668-
// TODO: return here?
669-
warn!("Received relay disco message from connection for {}, but with message from {}", remote_node_id.fmt_short(), source.fmt_short());
670-
}
671-
let message = RelayDiscoMessage {
672-
source,
673-
sealed_box,
674-
relay_url: self.url.clone(),
675-
relay_remote_node_id: remote_node_id,
676-
};
677-
if let Err(err) = self.relay_disco_recv.try_send(message) {
678-
warn!("Dropping received relay disco packet: {err:#}");
679-
}
680-
}
681-
None => {
682-
for datagram in PacketSplitIter::new(self.url.clone(), remote_node_id, data)
683-
{
684-
let Ok(datagram) = datagram else {
685-
warn!("Invalid packet split");
686-
break;
665+
for datagram in PacketSplitIter::new(self.url.clone(), remote_node_id, data) {
666+
let Ok(datagram) = datagram else {
667+
warn!("Invalid packet split");
668+
break;
669+
};
670+
match crate::disco::source_and_box_bytes(&datagram.buf) {
671+
Some((source, sealed_box)) => {
672+
if remote_node_id != source {
673+
// TODO: return here?
674+
warn!("Received relay disco message from connection for {}, but with message from {}", remote_node_id.fmt_short(), source.fmt_short());
675+
}
676+
let message = RelayDiscoMessage {
677+
source,
678+
sealed_box,
679+
relay_url: datagram.url.clone(),
680+
relay_remote_node_id: datagram.src,
687681
};
682+
if let Err(err) = self.relay_disco_recv.try_send(message) {
683+
warn!("Dropping received relay disco packet: {err:#}");
684+
}
685+
}
686+
None => {
688687
if let Err(err) = self.relay_datagrams_recv.try_send(datagram) {
689688
warn!("Dropping received relay data packet: {err:#}");
690689
}

0 commit comments

Comments
 (0)