From 7d02d79ff50da5a8ff206807000ec085c2f29cbd Mon Sep 17 00:00:00 2001 From: Igor Katson Date: Wed, 29 Nov 2023 23:57:11 +0000 Subject: [PATCH] Using response freshness in ordering --- crates/dht/src/dht.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/crates/dht/src/dht.rs b/crates/dht/src/dht.rs index 97a2101..e6610aa 100644 --- a/crates/dht/src/dht.rs +++ b/crates/dht/src/dht.rs @@ -437,7 +437,16 @@ impl RecursiveRequest { let has_returned_peers_desc = Reverse(n.returned_peers); let has_responded_desc = Reverse(n.last_response.is_some() as u8); let distance = n.id.distance(&self.info_hash); - (has_returned_peers_desc, has_responded_desc, distance) + let freshest_response = n + .last_response + .map(|r| r.elapsed()) + .unwrap_or(Duration::MAX); + ( + has_returned_peers_desc, + has_responded_desc, + distance, + freshest_response, + ) }); if closest_nodes.len() > LIMIT { let popped = closest_nodes.pop().unwrap();