Skip to content

Commit a3b55c9

Browse files
committed
[doc] move comment about AlreadyHaveTx DoS score to the right place
This comment isn't in the right place, as detection of a tx in recent_rejects would cause the function to exit much earlier. Move the comment to the right place and tweak the first sentence for accuracy.
1 parent 3b8c178 commit a3b55c9

File tree

1 file changed

+15
-17
lines changed

1 file changed

+15
-17
lines changed

src/net_processing.cpp

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4135,6 +4135,21 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
41354135
RelayTransaction(tx.GetHash(), tx.GetWitnessHash());
41364136
}
41374137
}
4138+
// If a tx is detected by m_recent_rejects it is ignored. Because we haven't
4139+
// submitted the tx to our mempool, we won't have computed a DoS
4140+
// score for it or determined exactly why we consider it invalid.
4141+
//
4142+
// This means we won't penalize any peer subsequently relaying a DoSy
4143+
// tx (even if we penalized the first peer who gave it to us) because
4144+
// we have to account for m_recent_rejects showing false positives. In
4145+
// other words, we shouldn't penalize a peer if we aren't *sure* they
4146+
// submitted a DoSy tx.
4147+
//
4148+
// Note that m_recent_rejects doesn't just record DoSy or invalid
4149+
// transactions, but any tx not accepted by the mempool, which may be
4150+
// due to node policy (vs. consensus). So we can't blanket penalize a
4151+
// peer simply for relaying a tx that our m_recent_rejects has caught,
4152+
// regardless of false positives.
41384153
return;
41394154
}
41404155

@@ -4255,23 +4270,6 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
42554270
}
42564271
}
42574272

4258-
// If a tx has been detected by m_recent_rejects, we will have reached
4259-
// this point and the tx will have been ignored. Because we haven't
4260-
// submitted the tx to our mempool, we won't have computed a DoS
4261-
// score for it or determined exactly why we consider it invalid.
4262-
//
4263-
// This means we won't penalize any peer subsequently relaying a DoSy
4264-
// tx (even if we penalized the first peer who gave it to us) because
4265-
// we have to account for m_recent_rejects showing false positives. In
4266-
// other words, we shouldn't penalize a peer if we aren't *sure* they
4267-
// submitted a DoSy tx.
4268-
//
4269-
// Note that m_recent_rejects doesn't just record DoSy or invalid
4270-
// transactions, but any tx not accepted by the mempool, which may be
4271-
// due to node policy (vs. consensus). So we can't blanket penalize a
4272-
// peer simply for relaying a tx that our m_recent_rejects has caught,
4273-
// regardless of false positives.
4274-
42754273
if (state.IsInvalid()) {
42764274
LogPrint(BCLog::MEMPOOLREJ, "%s (wtxid=%s) from peer=%d was not accepted: %s\n",
42774275
tx.GetHash().ToString(),

0 commit comments

Comments
 (0)