mirror of
https://github.com/kvazar-network/kevacoin.git
synced 2025-01-11 15:48:05 +00:00
Decouple CChain from mapBlockIndex
This commit is contained in:
parent
eecd3c0fb0
commit
6db83db3eb
@ -1151,7 +1151,7 @@ bool AppInit2(boost::thread_group& threadGroup)
|
|||||||
CWalletDB walletdb(strWalletFile);
|
CWalletDB walletdb(strWalletFile);
|
||||||
CBlockLocator locator;
|
CBlockLocator locator;
|
||||||
if (walletdb.ReadBestBlock(locator))
|
if (walletdb.ReadBestBlock(locator))
|
||||||
pindexRescan = chainActive.FindFork(locator);
|
pindexRescan = FindForkInGlobalIndex(chainActive, locator);
|
||||||
else
|
else
|
||||||
pindexRescan = chainActive.Genesis();
|
pindexRescan = chainActive.Genesis();
|
||||||
}
|
}
|
||||||
|
11
src/main.cpp
11
src/main.cpp
@ -431,18 +431,19 @@ CBlockLocator CChain::GetLocator(const CBlockIndex *pindex) const {
|
|||||||
return CBlockLocator(vHave);
|
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
|
// Find the first block the caller has in the main chain
|
||||||
BOOST_FOREACH(const uint256& hash, locator.vHave) {
|
BOOST_FOREACH(const uint256& hash, locator.vHave) {
|
||||||
BlockMap::iterator mi = mapBlockIndex.find(hash);
|
BlockMap::iterator mi = mapBlockIndex.find(hash);
|
||||||
if (mi != mapBlockIndex.end())
|
if (mi != mapBlockIndex.end())
|
||||||
{
|
{
|
||||||
CBlockIndex* pindex = (*mi).second;
|
CBlockIndex* pindex = (*mi).second;
|
||||||
if (Contains(pindex))
|
if (chain.Contains(pindex))
|
||||||
return pindex;
|
return pindex;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Genesis();
|
return chain.Genesis();
|
||||||
}
|
}
|
||||||
|
|
||||||
const CBlockIndex *CChain::FindFork(const CBlockIndex *pindex) const {
|
const CBlockIndex *CChain::FindFork(const CBlockIndex *pindex) const {
|
||||||
@ -3672,7 +3673,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
|
|||||||
LOCK(cs_main);
|
LOCK(cs_main);
|
||||||
|
|
||||||
// Find the last block the caller has in the main chain
|
// 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
|
// Send the rest of the chain
|
||||||
if (pindex)
|
if (pindex)
|
||||||
@ -3719,7 +3720,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Find the last block the caller has in the main chain
|
// Find the last block the caller has in the main chain
|
||||||
pindex = chainActive.FindFork(locator);
|
pindex = FindForkInGlobalIndex(chainActive, locator);
|
||||||
if (pindex)
|
if (pindex)
|
||||||
pindex = chainActive.Next(pindex);
|
pindex = chainActive.Next(pindex);
|
||||||
}
|
}
|
||||||
|
@ -953,13 +953,13 @@ public:
|
|||||||
/** Return a CBlockLocator that refers to a block in this chain (by default the tip). */
|
/** Return a CBlockLocator that refers to a block in this chain (by default the tip). */
|
||||||
CBlockLocator GetLocator(const CBlockIndex *pindex = NULL) const;
|
CBlockLocator GetLocator(const CBlockIndex *pindex = NULL) const;
|
||||||
|
|
||||||
/** Find the last common block between this chain and a locator. */
|
|
||||||
CBlockIndex *FindFork(const CBlockLocator &locator) const;
|
|
||||||
|
|
||||||
/** Find the last common block between this chain and a block index entry. */
|
/** Find the last common block between this chain and a block index entry. */
|
||||||
const CBlockIndex *FindFork(const CBlockIndex *pindex) const;
|
const CBlockIndex *FindFork(const CBlockIndex *pindex) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/** Find the last common block between the parameter chain and a locator. */
|
||||||
|
CBlockIndex* FindForkInGlobalIndex(const CChain& chain, const CBlockLocator& locator);
|
||||||
|
|
||||||
/** The currently-connected chain of blocks. */
|
/** The currently-connected chain of blocks. */
|
||||||
extern CChain chainActive;
|
extern CChain chainActive;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user