Merge pull request #1695 from sipa/noloadorphan

Do not accept orphan blocks in -loadblock mode
This commit is contained in:
Pieter Wuille 2012-08-22 04:32:39 -07:00
commit 1a3dcca8f4

View file

@ -1920,17 +1920,20 @@ bool ProcessBlock(CNode* pfrom, CBlock* pblock)
} }
// If don't already have its previous block, shunt it off to holding area until we get it // If we don't already have its previous block, shunt it off to holding area until we get it
if (!mapBlockIndex.count(pblock->hashPrevBlock)) if (!mapBlockIndex.count(pblock->hashPrevBlock))
{ {
printf("ProcessBlock: ORPHAN BLOCK, prev=%s\n", pblock->hashPrevBlock.ToString().substr(0,20).c_str()); printf("ProcessBlock: ORPHAN BLOCK, prev=%s\n", pblock->hashPrevBlock.ToString().substr(0,20).c_str());
CBlock* pblock2 = new CBlock(*pblock);
mapOrphanBlocks.insert(make_pair(hash, pblock2));
mapOrphanBlocksByPrev.insert(make_pair(pblock2->hashPrevBlock, pblock2));
// Ask this guy to fill in what we're missing // Accept orphans as long as there is a node to request its parents from
if (pfrom) if (pfrom) {
CBlock* pblock2 = new CBlock(*pblock);
mapOrphanBlocks.insert(make_pair(hash, pblock2));
mapOrphanBlocksByPrev.insert(make_pair(pblock2->hashPrevBlock, pblock2));
// Ask this guy to fill in what we're missing
pfrom->PushGetBlocks(pindexBest, GetOrphanRoot(pblock2)); pfrom->PushGetBlocks(pindexBest, GetOrphanRoot(pblock2));
}
return true; return true;
} }