mirror of
https://github.com/paradigmxyz/reth.git
synced 2026-01-29 09:08:05 -05:00
@@ -19,7 +19,7 @@ use tokio::{
|
||||
time::{Instant, Interval},
|
||||
};
|
||||
use tokio_stream::wrappers::UnboundedReceiverStream;
|
||||
use tracing::trace;
|
||||
use tracing::{debug, trace};
|
||||
|
||||
/// A communication channel to the [`PeersManager`] to apply manual changes to the peer set.
|
||||
#[derive(Clone, Debug)]
|
||||
@@ -173,10 +173,13 @@ impl PeersManager {
|
||||
pub(crate) fn apply_reputation_change(&mut self, peer_id: &PeerId, rep: ReputationChangeKind) {
|
||||
let reputation_change = self.reputation_weights.change(rep);
|
||||
let should_disconnect = if let Some(mut peer) = self.peers.get_mut(peer_id) {
|
||||
peer.reputation = peer.reputation.saturating_sub(reputation_change.as_i32());
|
||||
// we add reputation since negative reputation change decrease total reputation
|
||||
peer.reputation = peer.reputation.saturating_add(reputation_change.as_i32());
|
||||
trace!(target: "net::peers", repuation=%peer.reputation, banned=%peer.is_banned(), "applied reputation change");
|
||||
let should_disconnect = peer.state.is_connected() && peer.is_banned();
|
||||
|
||||
if should_disconnect {
|
||||
debug!(target: "net::peers", repuation=%peer.reputation, "disconnecting peer on reputation change");
|
||||
peer.state.disconnect();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user