aboutsummaryrefslogtreecommitdiff
path: root/src/net_processing.cpp
diff options
context:
space:
mode:
authorMatt Corallo <[email protected]>2019-01-16 13:11:13 +1000
committerSuhas Daftuar <[email protected]>2019-05-02 14:55:13 -0400
commit34477ccd39a8d4bfa8ad612f22d5a46291922185 (patch)
treecb10c04ca46dc532d59d8da2c5ca797e54093b9e /src/net_processing.cpp
parentBan all peers for all block script failures (diff)
downloaddiscoin-34477ccd39a8d4bfa8ad612f22d5a46291922185.tar.xz
discoin-34477ccd39a8d4bfa8ad612f22d5a46291922185.zip
[refactor] Add useful-for-dos "reason" field to CValidationState
This is a first step towards cleaning up our DoS interface - make validation return *why* something is invalid, and let net_processing figure out what that implies in terms of banning/disconnection/etc. Behavior change: peers will now be banned for providing blocks with premature coinbase spends. Co-authored-by: Anthony Towns <[email protected]> Suhas Daftuar <[email protected]>
Diffstat (limited to 'src/net_processing.cpp')
-rw-r--r--src/net_processing.cpp2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/net_processing.cpp b/src/net_processing.cpp
index a416093db..489ffcdc6 100644
--- a/src/net_processing.cpp
+++ b/src/net_processing.cpp
@@ -961,6 +961,7 @@ void Misbehaving(NodeId pnode, int howmuch, const std::string& message) EXCLUSIV
static bool TxRelayMayResultInDisconnect(const CValidationState& state)
{
+ assert(state.GetDoS() == state.GetDoSForReason());
return (state.GetDoS() > 0);
}
@@ -975,6 +976,7 @@ static bool TxRelayMayResultInDisconnect(const CValidationState& state)
* txs, the peer should not be punished. See BIP 152.
*/
static bool MaybePunishNode(NodeId nodeid, const CValidationState& state, bool via_compact_block, const std::string& message = "") {
+ assert(state.GetDoS() == state.GetDoSForReason());
int nDoS = state.GetDoS();
if (nDoS > 0 && !via_compact_block) {
LOCK(cs_main);