Add information to errors in ConnectBlock, CheckBlock

Add detailed state information to the errors, as it is no longer being
logged downstream.

Also add the state information to mempool rejection debug message in
ProcessMessages.

(cherry picked from commit bitcoin/bitcoin@66daed5e1b)
This commit is contained in:
Wladimir J. van der Laan 2015-08-06 10:02:12 +02:00 committed by Jack Grigg
parent abdef34b33
commit 7c6f2c5da6
1 changed files with 6 additions and 3 deletions

View File

@ -3181,7 +3181,8 @@ bool ConnectBlock(const CBlock& block, CValidationState& state, CBlockIndex* pin
std::vector<CScriptCheck> vChecks;
bool fCacheResults = fJustCheck; /* Don't cache results if we're actually connecting blocks (still consult the cache, though) */
if (!ContextualCheckInputs(tx, state, view, fExpensiveChecks, flags, fCacheResults, txdata[i], chainparams.GetConsensus(), consensusBranchId, nScriptCheckThreads ? &vChecks : NULL))
return false;
return error("ConnectBlock(): CheckInputs on %s failed with %s",
tx.GetHash().ToString(), FormatStateMessage(state));
control.Add(vChecks);
}
@ -4585,7 +4586,9 @@ bool CheckBlock(const CBlock& block,
// Check transactions
for (const CTransaction& tx : block.vtx)
if (!CheckTransaction(tx, state, verifier, orchardAuth))
return error("CheckBlock(): CheckTransaction failed");
return error("CheckBlock(): CheckTransaction of %s failed with %s",
tx.GetHash().ToString(),
FormatStateMessage(state));
unsigned int nSigOps = 0;
for (const CTransaction& tx : block.vtx)
@ -6765,7 +6768,7 @@ bool static ProcessMessage(const CChainParams& chainparams, CNode* pfrom, string
{
LogPrint("mempool", "%s from peer=%d %s was not accepted into the memory pool: %s\n", tx.GetHash().ToString(),
pfrom->id, pfrom->cleanSubVer,
state.GetRejectReason());
FormatStateMessage(state));
if (state.GetRejectCode() < REJECT_INTERNAL) // Never send AcceptToMemoryPool's internal codes over P2P
pfrom->PushMessage("reject", strCommand, state.GetRejectCode(),
state.GetRejectReason().substr(0, MAX_REJECT_MESSAGE_LENGTH), inv.hash);