diff --git a/src/net_processing.cpp b/src/net_processing.cpp --- a/src/net_processing.cpp +++ b/src/net_processing.cpp @@ -1511,14 +1511,12 @@ std::map>::iterator it = mapBlockSource.find(hash); - if (state.IsInvalid()) { - // Don't send reject message with code 0 or an internal reject code. - if (it != mapBlockSource.end() && State(it->second.first) && - state.GetRejectCode() > 0 && - state.GetRejectCode() < REJECT_INTERNAL) { - MaybePunishNodeForBlock(/*nodeid=*/it->second.first, state, - /*via_compact_block=*/!it->second.second); - } + // If the block failed validation, we know where it came from and we're + // still connected to that peer, maybe punish. + if (state.IsInvalid() && it != mapBlockSource.end() && + State(it->second.first)) { + MaybePunishNodeForBlock(/*nodeid=*/it->second.first, state, + /*via_compact_block=*/!it->second.second); } // Check that: // 1. The block is valid