mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-01-21 07:39:08 +01:00
Decouple CChain from mapBlockIndex
This commit is contained in:
11
src/main.cpp
11
src/main.cpp
@@ -431,18 +431,19 @@ CBlockLocator CChain::GetLocator(const CBlockIndex *pindex) const {
|
||||
return CBlockLocator(vHave);
|
||||
}
|
||||
|
||||
CBlockIndex *CChain::FindFork(const CBlockLocator &locator) const {
|
||||
CBlockIndex* FindForkInGlobalIndex(const CChain& chain, const CBlockLocator& locator)
|
||||
{
|
||||
// Find the first block the caller has in the main chain
|
||||
BOOST_FOREACH(const uint256& hash, locator.vHave) {
|
||||
BlockMap::iterator mi = mapBlockIndex.find(hash);
|
||||
if (mi != mapBlockIndex.end())
|
||||
{
|
||||
CBlockIndex* pindex = (*mi).second;
|
||||
if (Contains(pindex))
|
||||
if (chain.Contains(pindex))
|
||||
return pindex;
|
||||
}
|
||||
}
|
||||
return Genesis();
|
||||
return chain.Genesis();
|
||||
}
|
||||
|
||||
const CBlockIndex *CChain::FindFork(const CBlockIndex *pindex) const {
|
||||
@@ -3672,7 +3673,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
|
||||
LOCK(cs_main);
|
||||
|
||||
// Find the last block the caller has in the main chain
|
||||
CBlockIndex* pindex = chainActive.FindFork(locator);
|
||||
CBlockIndex* pindex = FindForkInGlobalIndex(chainActive, locator);
|
||||
|
||||
// Send the rest of the chain
|
||||
if (pindex)
|
||||
@@ -3719,7 +3720,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
|
||||
else
|
||||
{
|
||||
// Find the last block the caller has in the main chain
|
||||
pindex = chainActive.FindFork(locator);
|
||||
pindex = FindForkInGlobalIndex(chainActive, locator);
|
||||
if (pindex)
|
||||
pindex = chainActive.Next(pindex);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user