diff options
| author | tv <tv@krebsco.de> | 2026-11-04 19:46:17 +0100 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-11-04 19:46:17 +0100 |
| commit | c3faf6ecde8157154a01daa2ddc0ac02e6c761f1 (patch) | |
| tree | e48db7771a8a6baf8afb4d21063ffe72894f83b0 /src/swarm/relay.rs | |
| parent | 07ef1e4e562d977e72f0a6b702736ae3645b45c7 (diff) | |
tree messages need no answer
Diffstat (limited to 'src/swarm/relay.rs')
| -rw-r--r-- | src/swarm/relay.rs | 9 |
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 }; |
