Skip to content

Commit 8f0cb2d

Browse files
feat: disconnect peer immediately
1 parent bb0d8c1 commit 8f0cb2d

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

dash-spv/src/network/multi_peer.rs

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1070,6 +1070,24 @@ impl NetworkManager for MultiPeerNetworkManager {
10701070
reason: &str,
10711071
) -> NetworkResult<()> {
10721072
if let Some(addr) = self.get_last_message_peer().await {
1073+
match self.disconnect_peer(&addr, reason).await {
1074+
Ok(()) => {
1075+
log::warn!(
1076+
"Peer {} disconnected for invalid ChainLock enforcement: {}",
1077+
addr,
1078+
reason
1079+
);
1080+
}
1081+
Err(err) => {
1082+
log::error!(
1083+
"Failed to disconnect peer {} after invalid ChainLock enforcement ({}): {}",
1084+
addr,
1085+
reason,
1086+
err
1087+
);
1088+
}
1089+
}
1090+
10731091
// Apply misbehavior score and a short temporary ban
10741092
self.reputation_manager
10751093
.update_reputation(addr, misbehavior_scores::INVALID_CHAINLOCK, reason)
@@ -1097,6 +1115,24 @@ impl NetworkManager for MultiPeerNetworkManager {
10971115
self.reputation_manager
10981116
.temporary_ban_peer(addr, Duration::from_secs(10 * 60), reason)
10991117
.await;
1118+
1119+
match self.disconnect_peer(&addr, reason).await {
1120+
Ok(()) => {
1121+
log::warn!(
1122+
"Peer {} disconnected for invalid InstantLock enforcement: {}",
1123+
addr,
1124+
reason
1125+
);
1126+
}
1127+
Err(err) => {
1128+
log::error!(
1129+
"Failed to disconnect peer {} after invalid InstantLock enforcement ({}): {}",
1130+
addr,
1131+
reason,
1132+
err
1133+
);
1134+
}
1135+
}
11001136
}
11011137
Ok(())
11021138
}

0 commit comments

Comments
 (0)