mirror of
https://github.com/hl-archive-node/nanoreth.git
synced 2025-12-06 10:59:55 +00:00
fix: correct expiration for discv4 lookup requests (#7996)
This commit is contained in:
@ -197,6 +197,12 @@ impl Discv4ConfigBuilder {
|
||||
self
|
||||
}
|
||||
|
||||
/// Sets the expiration duration for lookup neighbor requests
|
||||
pub fn lookup_neighbours_expiration(&mut self, duration: Duration) -> &mut Self {
|
||||
self.config.neighbours_expiration = duration;
|
||||
self
|
||||
}
|
||||
|
||||
/// Sets the expiration duration for a bond with a peer
|
||||
pub fn bond_expiration(&mut self, duration: Duration) -> &mut Self {
|
||||
self.config.bond_expiration = duration;
|
||||
|
||||
@ -1421,7 +1421,7 @@ impl Discv4Service {
|
||||
|
||||
let mut failed_lookups = Vec::new();
|
||||
self.pending_lookup.retain(|node_id, (lookup_sent_at, _)| {
|
||||
if now.duration_since(*lookup_sent_at) > self.config.ping_expiration {
|
||||
if now.duration_since(*lookup_sent_at) > self.config.request_timeout {
|
||||
failed_lookups.push(*node_id);
|
||||
return false
|
||||
}
|
||||
@ -1441,7 +1441,7 @@ impl Discv4Service {
|
||||
fn evict_failed_neighbours(&mut self, now: Instant) {
|
||||
let mut failed_neighbours = Vec::new();
|
||||
self.pending_find_nodes.retain(|node_id, find_node_request| {
|
||||
if now.duration_since(find_node_request.sent_at) > self.config.request_timeout {
|
||||
if now.duration_since(find_node_request.sent_at) > self.config.neighbours_expiration {
|
||||
if !find_node_request.answered {
|
||||
// node actually responded but with fewer entries than expected, but we don't
|
||||
// treat this as an hard error since it responded.
|
||||
@ -2549,6 +2549,7 @@ mod tests {
|
||||
let config = Discv4Config::builder()
|
||||
.request_timeout(Duration::from_millis(200))
|
||||
.ping_expiration(Duration::from_millis(200))
|
||||
.lookup_neighbours_expiration(Duration::from_millis(200))
|
||||
.add_eip868_pair("eth", fork_id)
|
||||
.build();
|
||||
let (_disv4, mut service) = create_discv4_with_config(config).await;
|
||||
|
||||
Reference in New Issue
Block a user