Eliminate unnecessary call to CheckBlock

This commit is contained in:
Suhas Daftuar
2015-12-17 13:45:33 -05:00
committed by lateminer
parent 09ddb265d6
commit e46145b850

View File

@@ -4177,22 +4177,17 @@ bool static IsCanonicalBlockSignature(const CBlock* pblock)
bool ProcessNewBlock(CValidationState& state, const CChainParams& chainparams, const CNode* pfrom, const CBlock* pblock, bool fForceProcessing, CDiskBlockPos* dbp, const uint256& hash)
{
if (!IsCanonicalBlockSignature(pblock)) {
if (pfrom && pfrom->nVersion >= CANONICAL_BLOCK_SIG_VERSION)
return state.DoS(100, error("ProcessNewBlock(): bad block signature encoding"),
REJECT_INVALID, "bad-block-signature-encoding");
return false;
}
// Preliminary checks
bool checked = CheckBlock(*pblock, state, hash);
if (!IsCanonicalBlockSignature(pblock)) {
if (pfrom && pfrom->nVersion >= CANONICAL_BLOCK_SIG_VERSION)
return state.DoS(100, error("ProcessNewBlock(): bad block signature encoding"),
REJECT_INVALID, "bad-block-signature-encoding");
return false;
}
{
LOCK(cs_main);
bool fRequested = MarkBlockAsReceived(hash);
fRequested |= fForceProcessing;
if (!checked) {
return error("%s: CheckBlock FAILED", __func__);
}
// Store to disk
CBlockIndex *pindex = NULL;