Use exposed ProcessNewBlockHeaders from ProcessMessages

This commit is contained in:
Matt Corallo 2016-11-03 16:56:33 -04:00
parent 63fd101c52
commit a8b936df20

View File

@ -6019,23 +6019,28 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
return true; return true;
} }
BOOST_FOREACH(const CBlockHeader& header, headers) { uint256 hashLastBlock;
CValidationState state; for (const CBlockHeader& header : headers) {
if (pindexLast != NULL && header.hashPrevBlock != pindexLast->GetBlockHash()) { if (!hashLastBlock.IsNull() && header.hashPrevBlock != hashLastBlock) {
Misbehaving(pfrom->GetId(), 20); Misbehaving(pfrom->GetId(), 20);
return error("non-continuous headers sequence"); return error("non-continuous headers sequence");
} }
if (!AcceptBlockHeader(header, state, chainparams, &pindexLast)) { hashLastBlock = header.GetHash();
int nDoS;
if (state.IsInvalid(nDoS)) {
if (nDoS > 0)
Misbehaving(pfrom->GetId(), nDoS);
return error("invalid header received");
}
}
} }
} }
CValidationState state;
if (!ProcessNewBlockHeaders(headers, state, chainparams, &pindexLast)) {
int nDoS;
if (state.IsInvalid(nDoS)) {
if (nDoS > 0) {
LOCK(cs_main);
Misbehaving(pfrom->GetId(), nDoS);
}
return error("invalid header received");
}
}
{ {
LOCK(cs_main); LOCK(cs_main);
CNodeState *nodestate = State(pfrom->GetId()); CNodeState *nodestate = State(pfrom->GetId());
@ -6110,8 +6115,6 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
} }
} }
} }
NotifyHeaderTip();
} }
else if (strCommand == NetMsgType::BLOCK && !fImporting && !fReindex) // Ignore blocks received while importing else if (strCommand == NetMsgType::BLOCK && !fImporting && !fReindex) // Ignore blocks received while importing