Move recentRejects initialization to top of InitBlockIndex
This avoids that premature return in the condition that a new chain is initialized results in NULL pointer errors due to recentReject not being constructed. Also add assertions where it is used. (cherry picked from commit a8d0407c4fcf7c4e8ed0e8edabd204f7a4efa477)
This commit is contained in:
parent
ec9b6c33e8
commit
5094a81d3b
10
src/main.cpp
10
src/main.cpp
|
@ -3404,6 +3404,10 @@ bool LoadBlockIndex()
|
|||
bool InitBlockIndex() {
|
||||
const CChainParams& chainparams = Params();
|
||||
LOCK(cs_main);
|
||||
|
||||
// Initialize global variables that cannot be constructed at startup.
|
||||
recentRejects.reset(new CRollingBloomFilter(120000, 0.000001));
|
||||
|
||||
// Check whether we're already initialized
|
||||
if (chainActive.Genesis() != NULL)
|
||||
return true;
|
||||
|
@ -3437,9 +3441,6 @@ bool InitBlockIndex() {
|
|||
}
|
||||
}
|
||||
|
||||
// Initialize global variables that cannot be constructed at startup.
|
||||
recentRejects.reset(new CRollingBloomFilter(120000, 0.000001));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -3809,6 +3810,7 @@ bool static AlreadyHave(const CInv& inv)
|
|||
{
|
||||
case MSG_TX:
|
||||
{
|
||||
assert(recentRejects);
|
||||
if (chainActive.Tip()->GetBlockHash() != hashRecentRejectsChainTip)
|
||||
{
|
||||
// If the chain tip has changed previously rejected transactions
|
||||
|
@ -4422,6 +4424,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
|
|||
// Probably non-standard or insufficient fee/priority
|
||||
LogPrint("mempool", " removed orphan tx %s\n", orphanHash.ToString());
|
||||
vEraseQueue.push_back(orphanHash);
|
||||
assert(recentRejects);
|
||||
recentRejects->insert(orphanHash);
|
||||
}
|
||||
mempool.check(pcoinsTip);
|
||||
|
@ -4445,6 +4448,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
|
|||
// already in the mempool; if the tx isn't in the mempool that
|
||||
// means it was rejected and we shouldn't ask for it again.
|
||||
if (!mempool.exists(tx.GetHash())) {
|
||||
assert(recentRejects);
|
||||
recentRejects->insert(tx.GetHash());
|
||||
}
|
||||
if (pfrom->fWhitelisted) {
|
||||
|
|
Loading…
Reference in New Issue