|
|
@ -2524,7 +2524,7 @@ void CBlockIndex::BuildSkip() |
|
|
|
pskip = pprev->GetAncestor(GetSkipHeight(nHeight)); |
|
|
|
pskip = pprev->GetAncestor(GetSkipHeight(nHeight)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
bool ProcessBlock(CValidationState &state, CNode* pfrom, CBlock* pblock, CDiskBlockPos *dbp) |
|
|
|
bool ProcessNewBlock(CValidationState &state, CNode* pfrom, CBlock* pblock, CDiskBlockPos *dbp) |
|
|
|
{ |
|
|
|
{ |
|
|
|
// Preliminary checks
|
|
|
|
// Preliminary checks
|
|
|
|
bool checked = CheckBlock(*pblock, state); |
|
|
|
bool checked = CheckBlock(*pblock, state); |
|
|
@ -2533,7 +2533,7 @@ bool ProcessBlock(CValidationState &state, CNode* pfrom, CBlock* pblock, CDiskBl |
|
|
|
LOCK(cs_main); |
|
|
|
LOCK(cs_main); |
|
|
|
MarkBlockAsReceived(pblock->GetHash()); |
|
|
|
MarkBlockAsReceived(pblock->GetHash()); |
|
|
|
if (!checked) { |
|
|
|
if (!checked) { |
|
|
|
return error("ProcessBlock() : CheckBlock FAILED"); |
|
|
|
return error("%s : CheckBlock FAILED", __func__); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Store to disk
|
|
|
|
// Store to disk
|
|
|
@ -2543,11 +2543,11 @@ bool ProcessBlock(CValidationState &state, CNode* pfrom, CBlock* pblock, CDiskBl |
|
|
|
mapBlockSource[pindex->GetBlockHash()] = pfrom->GetId(); |
|
|
|
mapBlockSource[pindex->GetBlockHash()] = pfrom->GetId(); |
|
|
|
} |
|
|
|
} |
|
|
|
if (!ret) |
|
|
|
if (!ret) |
|
|
|
return error("ProcessBlock() : AcceptBlock FAILED"); |
|
|
|
return error("%s : AcceptBlock FAILED", __func__); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (!ActivateBestChain(state, pblock)) |
|
|
|
if (!ActivateBestChain(state, pblock)) |
|
|
|
return error("ProcessBlock() : ActivateBestChain failed"); |
|
|
|
return error("%s : ActivateBestChain failed", __func__); |
|
|
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
@ -3145,7 +3145,7 @@ bool LoadExternalBlockFile(FILE* fileIn, CDiskBlockPos *dbp) |
|
|
|
// process in case the block isn't known yet
|
|
|
|
// process in case the block isn't known yet
|
|
|
|
if (mapBlockIndex.count(hash) == 0) { |
|
|
|
if (mapBlockIndex.count(hash) == 0) { |
|
|
|
CValidationState state; |
|
|
|
CValidationState state; |
|
|
|
if (ProcessBlock(state, NULL, &block, dbp)) |
|
|
|
if (ProcessNewBlock(state, NULL, &block, dbp)) |
|
|
|
nLoaded++; |
|
|
|
nLoaded++; |
|
|
|
if (state.IsError()) |
|
|
|
if (state.IsError()) |
|
|
|
break; |
|
|
|
break; |
|
|
@ -3165,7 +3165,7 @@ bool LoadExternalBlockFile(FILE* fileIn, CDiskBlockPos *dbp) |
|
|
|
LogPrintf("%s: Processing out of order child %s of %s\n", __func__, block.GetHash().ToString(), |
|
|
|
LogPrintf("%s: Processing out of order child %s of %s\n", __func__, block.GetHash().ToString(), |
|
|
|
head.ToString()); |
|
|
|
head.ToString()); |
|
|
|
CValidationState dummy; |
|
|
|
CValidationState dummy; |
|
|
|
if (ProcessBlock(dummy, NULL, &block, &it->second)) |
|
|
|
if (ProcessNewBlock(dummy, NULL, &block, &it->second)) |
|
|
|
{ |
|
|
|
{ |
|
|
|
nLoaded++; |
|
|
|
nLoaded++; |
|
|
|
queue.push_back(block.GetHash()); |
|
|
|
queue.push_back(block.GetHash()); |
|
|
@ -3943,7 +3943,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv, |
|
|
|
pfrom->AddInventoryKnown(inv); |
|
|
|
pfrom->AddInventoryKnown(inv); |
|
|
|
|
|
|
|
|
|
|
|
CValidationState state; |
|
|
|
CValidationState state; |
|
|
|
ProcessBlock(state, pfrom, &block); |
|
|
|
ProcessNewBlock(state, pfrom, &block); |
|
|
|
int nDoS; |
|
|
|
int nDoS; |
|
|
|
if (state.IsInvalid(nDoS)) { |
|
|
|
if (state.IsInvalid(nDoS)) { |
|
|
|
pfrom->PushMessage("reject", strCommand, state.GetRejectCode(), |
|
|
|
pfrom->PushMessage("reject", strCommand, state.GetRejectCode(), |
|
|
|