mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-18 13:17:55 +02:00
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 a8d0407c4f)
This commit is contained in:
parent
ec9b6c33e8
commit
5094a81d3b
1 changed files with 7 additions and 3 deletions
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…
Add table
Add a link
Reference in a new issue