aboutsummaryrefslogtreecommitdiffstats
path: root/src/swarm/relay.rs
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-11-04 19:46:17 +0100
committertv <tv@krebsco.de>2026-11-04 19:46:17 +0100
commitc3faf6ecde8157154a01daa2ddc0ac02e6c761f1 (patch)
treee48db7771a8a6baf8afb4d21063ffe72894f83b0 /src/swarm/relay.rs
parent07ef1e4e562d977e72f0a6b702736ae3645b45c7 (diff)
tree messages need no answer
Diffstat (limited to 'src/swarm/relay.rs')
-rw-r--r--src/swarm/relay.rs9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/swarm/relay.rs b/src/swarm/relay.rs
index f141dbb..98d4ca0 100644
--- a/src/swarm/relay.rs
+++ b/src/swarm/relay.rs
@@ -126,8 +126,15 @@ pub(crate) async fn announce(state: &AppState, from: &str, writers: &[u64], unau
let slow = slow.get_or_insert_with(Pending::default);
slow.senders.insert(from.to_owned());
slow.all = true;
+ // Our children were sent the changes, but those that reach no member but us
+ // hear of a lost message from nobody else (`Plan::alone`).
for plan in &plans {
- slow.sent.extend(plan.children.iter().cloned());
+ slow.sent.extend(
+ plan.children
+ .iter()
+ .filter(|child| !plan.alone.contains(child))
+ .cloned(),
+ );
}
schedule
};