From 345b2c35b9c6011c2b08d1c874cfff41f751e9a0 Mon Sep 17 00:00:00 2001 From: Matthias Seitz Date: Fri, 16 Dec 2022 13:36:58 +0100 Subject: [PATCH] fix: apply reputation (#487) * fix: apply reputation * add note --- crates/net/network/src/peers/manager.rs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/crates/net/network/src/peers/manager.rs b/crates/net/network/src/peers/manager.rs index 01a60a8dcc..960ca15ae3 100644 --- a/crates/net/network/src/peers/manager.rs +++ b/crates/net/network/src/peers/manager.rs @@ -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(); }