aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authortv <tv@krebsco.de>2026-11-06 04:34:11 +0100
committertv <tv@krebsco.de>2026-11-06 04:34:11 +0100
commitb4d0f3d9671c3bac8fd3c4b6c3f5f75196a06742 (patch)
tree3ffc73f8cea639dac420be9370b579465e286e67 /src
parentde30fc105bbb9c610c847f64e00cd2555ca0c63c (diff)
known elsewhere pruned
Diffstat (limited to 'src')
-rw-r--r--src/document/sync.rs5
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) {