aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPieter Wuille <pieter.wuille@gmail.com>2012-08-21 19:18:53 +0200
committerPieter Wuille <pieter.wuille@gmail.com>2012-08-21 19:18:53 +0200
commit5c88e3c108f8bbe0edbcd88b3f48e3eaf611cd7c (patch)
treeed42f754f0605664f56ce0721555be509d90884c /src
parent1954d406918f4dc090c890aacfd1c38c62d3404b (diff)
downloadbitcoin-5c88e3c108f8bbe0edbcd88b3f48e3eaf611cd7c.tar.xz
Do not accept orphan blocks in -loadblock mode
Diffstat (limited to 'src')
-rw-r--r--src/main.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 7dd59fdeaa..91aba149bc 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -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))
{
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
- if (pfrom)
+ // Accept orphans as long as there is a node to request its parents from
+ 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));
+ }
return true;
}