Use ProcessNewBlockHeaders in CMPCTBLOCK processing
This commit is contained in:
parent
a8b936df20
commit
58a215ce8c
1 changed files with 7 additions and 2 deletions
|
@ -5768,6 +5768,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
|
|||
CBlockHeaderAndShortTxIDs cmpctblock;
|
||||
vRecv >> cmpctblock;
|
||||
|
||||
{
|
||||
LOCK(cs_main);
|
||||
|
||||
if (mapBlockIndex.find(cmpctblock.header.hashPrevBlock) == mapBlockIndex.end()) {
|
||||
|
@ -5776,19 +5777,23 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
|
|||
connman.PushMessage(pfrom, NetMsgType::GETHEADERS, chainActive.GetLocator(pindexBestHeader), uint256());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
CBlockIndex *pindex = NULL;
|
||||
CValidationState state;
|
||||
if (!AcceptBlockHeader(cmpctblock.header, state, chainparams, &pindex)) {
|
||||
if (!ProcessNewBlockHeaders({cmpctblock.header}, state, chainparams, &pindex)) {
|
||||
int nDoS;
|
||||
if (state.IsInvalid(nDoS)) {
|
||||
if (nDoS > 0)
|
||||
if (nDoS > 0) {
|
||||
LOCK(cs_main);
|
||||
Misbehaving(pfrom->GetId(), nDoS);
|
||||
}
|
||||
LogPrintf("Peer %d sent us invalid header via cmpctblock\n", pfrom->id);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
LOCK(cs_main);
|
||||
// If AcceptBlockHeader returned true, it set pindex
|
||||
assert(pindex);
|
||||
UpdateBlockAvailability(pfrom->GetId(), pindex->GetBlockHash());
|
||||
|
|
Loading…
Reference in a new issue