net: only remove peer from hostlist after the configured quarantine limit

This commit is contained in:
draoi
2024-02-25 13:50:17 +01:00
parent 5b38b29884
commit 874c2cc85e

View File

@@ -655,14 +655,13 @@ impl Hosts {
/// If they've been quarantined for more than a configured limit, forget them.
pub async fn quarantine(&self, url: &Url) {
debug!(target: "store::remove()", "Quarantining peer {}", url);
// Remove from the entire hosts set
self.remove_host(url).await;
let mut q = self.quarantine.write().await;
if let Some(retries) = q.get_mut(url) {
*retries += 1;
debug!(target: "net::hosts::quarantine()", "Peer {} quarantined {} times", url, retries);
if *retries == self.settings.hosts_quarantine_limit {
debug!(target: "net::hosts::quarantine()", "Removing from hostlist {}", url);
self.remove_host(url).await;
debug!(target: "net::hosts::quarantine()", "Banning peer {}", url);
q.remove(url);
self.mark_rejected(url).await;