diff options
| author | tv <tv@krebsco.de> | 2026-11-06 04:34:11 +0100 |
|---|---|---|
| committer | tv <tv@krebsco.de> | 2026-11-06 04:34:11 +0100 |
| commit | b4d0f3d9671c3bac8fd3c4b6c3f5f75196a06742 (patch) | |
| tree | 3ffc73f8cea639dac420be9370b579465e286e67 /src/document | |
| parent | de30fc105bbb9c610c847f64e00cd2555ca0c63c (diff) | |
known elsewhere pruned
Diffstat (limited to 'src/document')
| -rw-r--r-- | src/document/sync.rs | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/document/sync.rs b/src/document/sync.rs index eed0024..114b538 100644 --- a/src/document/sync.rs +++ b/src/document/sync.rs @@ -842,6 +842,11 @@ impl SyncSession { peer: &str, now: Instant, ) -> (usize, usize) { + // Pruned here too, on every message from the peer: `known_to_peer` prunes only + // when another parent brings something, which stops when the peer is no longer + // covered by one. + self.known_elsewhere + .retain(|_, at| now.saturating_duration_since(*at) < KNOWN_ELSEWHERE_KEPT); let mut asked = (0, 0); for hash in self.state.their_need.iter().flatten() { if let Some(at) = self.known_elsewhere.remove(hash) { |
