aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/banlist.rs6
-rw-r--r--src/node.rs5
2 files changed, 11 insertions, 0 deletions
diff --git a/src/banlist.rs b/src/banlist.rs
index f01e31a..4827242 100644
--- a/src/banlist.rs
+++ b/src/banlist.rs
@@ -102,6 +102,12 @@ impl BanList {
.retain(|_, e| e.last_failure.elapsed() < self.ban_duration);
}
+ /// Remove a specific ban and its failure history.
+ pub fn unban(&mut self, addr: &SocketAddr) {
+ self.bans.remove(addr);
+ self.failures.remove(addr);
+ }
+
/// Number of currently active bans.
pub fn ban_count(&self) -> usize {
self.bans
diff --git a/src/node.rs b/src/node.rs
index fef917e..2c3cec9 100644
--- a/src/node.rs
+++ b/src/node.rs
@@ -1165,6 +1165,11 @@ impl Node {
self.peers.len()
}
+ /// Remove a ban for a specific address.
+ pub fn unban(&mut self, addr: &std::net::SocketAddr) {
+ self.ban_list.unban(addr);
+ }
+
/// Snapshot of metrics counters.
pub fn metrics(&self) -> crate::metrics::MetricsSnapshot {
self.metrics.snapshot()