aboutsummaryrefslogtreecommitdiffstats
path: root/src/swarm/topology.rs
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-10-27 02:02:15 +0100
committertv <tv@krebsco.de>2026-10-27 02:02:15 +0100
commit1639b17f011379b886cb15db38f997d59a962849 (patch)
tree1417ead3872ade72e4d8a1ab4a715f26b0ba6335 /src/swarm/topology.rs
parent027a0920b81e7ee3e0f3eb4f0b3cbbb559133252 (diff)
add support for several transports
Diffstat (limited to 'src/swarm/topology.rs')
-rw-r--r--src/swarm/topology.rs8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/swarm/topology.rs b/src/swarm/topology.rs
index bdfeb53..5150e38 100644
--- a/src/swarm/topology.rs
+++ b/src/swarm/topology.rs
@@ -144,9 +144,15 @@ pub(crate) async fn refresh(state: &AppState) -> Option<NeighbourChange> {
(current, stable)
};
let k = state.neighbours_k;
+ // Those that don't answer, and those on none of our transports.
let mut unreachable = BTreeSet::new();
for member in &current {
- if let Some(peer_state) = state.get_peer_state(member).await
+ if member == state.local_id() {
+ continue;
+ }
+ if !state.transport.can_reach(member) {
+ unreachable.insert(member.clone());
+ } else if let Some(peer_state) = state.get_peer_state(member).await
&& peer_state.lock().await.is_unreachable()
{
unreachable.insert(member.clone());