aboutsummaryrefslogtreecommitdiff
path: root/src/net_processing.cpp
diff options
context:
space:
mode:
authorMatt Corallo <git@bluematt.me>2019-01-16 13:11:13 +1000
committerSuhas Daftuar <sdaftuar@gmail.com>2019-05-02 14:55:13 -0400
commit34477ccd39a8d4bfa8ad612f22d5a46291922185 (patch)
treecb10c04ca46dc532d59d8da2c5ca797e54093b9e /src/net_processing.cpp
parent6a7f8777a0b193fae4f976196f3464ffac01bf1b (diff)
downloadbitcoin-34477ccd39a8d4bfa8ad612f22d5a46291922185.tar.xz
[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 <aj@erisian.com.au> Suhas Daftuar <sdaftuar@gmail.com>
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 a416093db1..489ffcdc66 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);