@@ -17,9 +17,7 @@ use crate::network::addrv2::AddrV2Handler;
1717use crate :: network:: constants:: * ;
1818use crate :: network:: discovery:: DnsDiscovery ;
1919use crate :: network:: pool:: PeerPool ;
20- use crate :: network:: reputation:: {
21- misbehavior_scores, positive_scores, PeerReputationManager , ReputationAware ,
22- } ;
20+ use crate :: network:: reputation:: { ChangeReason , PeerReputationManager } ;
2321use crate :: network:: {
2422 HandshakeManager , Message , MessageDispatcher , MessageType , NetworkManager , Peer ,
2523} ;
@@ -446,11 +444,9 @@ impl PeerNetworkManager {
446444 headers2_disabled. lock ( ) . await . insert ( addr) ;
447445 // Apply reputation penalty
448446 reputation_manager
449- . update_reputation (
450- addr,
451- misbehavior_scores:: INVALID_MESSAGE ,
452- "Headers2 decompression failed" ,
453- )
447+ . lock ( )
448+ . await
449+ . update_reputation ( addr, ChangeReason :: InvalidHeaders2 )
454450 . await ;
455451 continue ; // Don't forward corrupted message
456452 }
@@ -759,7 +755,7 @@ impl PeerNetworkManager {
759755 }
760756
761757 // Save reputation data periodically
762- if let Err ( e) = reputation_manager. save_to_storage ( & * peer_store) . await {
758+ if let Err ( e) = reputation_manager. lock ( ) . await . save_to_storage ( & * peer_store) . await {
763759 log:: warn!( "Failed to save reputation data: {}" , e) ;
764760 }
765761 }
@@ -978,17 +974,6 @@ impl PeerNetworkManager {
978974 Ok ( ( ) )
979975 }
980976
981- /// Get reputation information for all peers
982- pub async fn get_peer_reputations ( & self ) -> HashMap < SocketAddr , ( i32 , bool ) > {
983- let reputations = self . reputation_manager . lock ( ) . await . get_all_reputations ( ) . await ;
984- reputations. into_iter ( ) . map ( |( addr, rep) | ( addr, ( rep. score , rep. is_banned ( ) ) ) ) . collect ( )
985- }
986-
987- /// Unban a specific peer
988- pub async fn unban_peer ( & self , addr : & SocketAddr ) {
989- self . reputation_manager . lock ( ) . await . unban_peer ( addr) . await ;
990- }
991-
992977 /// Shutdown the network manager
993978 pub async fn shutdown ( & self ) {
994979 log:: info!( "Shutting down peer network manager" ) ;
@@ -1003,7 +988,9 @@ impl PeerNetworkManager {
1003988 }
1004989
1005990 // Save reputation data before shutdown
1006- if let Err ( e) = self . reputation_manager . save_to_storage ( & * self . peer_store ) . await {
991+ if let Err ( e) =
992+ self . reputation_manager . lock ( ) . await . save_to_storage ( & * self . peer_store ) . await
993+ {
1007994 log:: warn!( "Failed to save reputation data on shutdown: {}" , e) ;
1008995 }
1009996
@@ -1098,64 +1085,62 @@ impl NetworkManager for PeerNetworkManager {
10981085 } // end match
10991086 } // end send_message
11001087
1101- async fn penalize_peer ( & self , address : SocketAddr , score_change : i32 , reason : & str ) {
1102- self . reputation_manager . update_reputation ( address, score_change , reason) . await ;
1088+ async fn penalize_peer ( & self , address : SocketAddr , reason : ChangeReason ) {
1089+ self . reputation_manager . lock ( ) . await . update_reputation ( address, reason) . await ;
11031090 }
11041091
1105- async fn penalize_peer_invalid_chainlock ( & self , address : SocketAddr , reason : & str ) {
1106- match self . disconnect_peer ( & address, reason ) . await {
1092+ async fn penalize_peer_invalid_chainlock ( & self , address : SocketAddr ) {
1093+ match self . disconnect_peer ( & address) . await {
11071094 Ok ( ( ) ) => {
1108- log:: warn!(
1109- "Peer {} disconnected for invalid ChainLock enforcement: {}" ,
1110- address,
1111- reason
1112- ) ;
1095+ log:: warn!( "Peer {} disconnected for invalid ChainLock enforcement" , address, ) ;
11131096 }
11141097 Err ( err) => {
11151098 log:: error!(
1116- "Failed to disconnect peer {} after invalid ChainLock enforcement ({}) : {}" ,
1099+ "Failed to disconnect peer {} after invalid ChainLock enforcement: {}" ,
11171100 address,
1118- reason,
11191101 err
11201102 ) ;
11211103 }
11221104 }
11231105
11241106 // Apply misbehavior score and a short temporary ban
11251107 self . reputation_manager
1126- . update_reputation ( address, misbehavior_scores:: INVALID_CHAINLOCK , reason)
1108+ . lock ( )
1109+ . await
1110+ . update_reputation ( address, ChangeReason :: InvalidChainLock )
11271111 . await ;
11281112
11291113 // Short ban: 10 minutes for relaying invalid ChainLock
11301114 self . reputation_manager
1131- . temporary_ban_peer ( address, Duration :: from_secs ( 10 * 60 ) , reason)
1115+ . lock ( )
1116+ . await
1117+ . temporary_ban_peer ( address, Duration :: from_secs ( 10 * 60 ) )
11321118 . await ;
11331119 }
11341120
1135- async fn penalize_peer_invalid_instantlock ( & self , address : SocketAddr , reason : & str ) {
1121+ async fn penalize_peer_invalid_instantlock ( & self , address : SocketAddr ) {
11361122 // Apply misbehavior score and a short temporary ban
11371123 self . reputation_manager
1138- . update_reputation ( address, misbehavior_scores:: INVALID_INSTANTLOCK , reason)
1124+ . lock ( )
1125+ . await
1126+ . update_reputation ( address, ChangeReason :: InvalidInstantLock )
11391127 . await ;
11401128
11411129 // Short ban: 10 minutes for relaying invalid InstantLock
11421130 self . reputation_manager
1143- . temporary_ban_peer ( address, Duration :: from_secs ( 10 * 60 ) , reason)
1131+ . lock ( )
1132+ . await
1133+ . temporary_ban_peer ( address, Duration :: from_secs ( 10 * 60 ) )
11441134 . await ;
11451135
1146- match self . disconnect_peer ( & address, reason ) . await {
1136+ match self . disconnect_peer ( & address) . await {
11471137 Ok ( ( ) ) => {
1148- log:: warn!(
1149- "Peer {} disconnected for invalid InstantLock enforcement: {}" ,
1150- address,
1151- reason
1152- ) ;
1138+ log:: warn!( "Peer {} disconnected for invalid InstantLock enforcement" , address, ) ;
11531139 }
11541140 Err ( err) => {
11551141 log:: error!(
1156- "Failed to disconnect peer {} after invalid InstantLock enforcement ({}) : {}" ,
1142+ "Failed to disconnect peer {} after invalid InstantLock enforcement: {}" ,
11571143 address,
1158- reason,
11591144 err
11601145 ) ;
11611146 }
0 commit comments