Avoid repeated lookups in mapOrphanTransactions and mapOrphanTransactionsByPrev
This commit is contained in:
parent
df623d83da
commit
89d91f6aa7
1 changed files with 13 additions and 10 deletions
23
src/main.cpp
23
src/main.cpp
|
@ -492,16 +492,17 @@ bool AddOrphanTx(const CTransaction& tx)
|
|||
|
||||
void static EraseOrphanTx(uint256 hash)
|
||||
{
|
||||
if (!mapOrphanTransactions.count(hash))
|
||||
map<uint256, CTransaction>::iterator it = mapOrphanTransactions.find(hash);
|
||||
if (it == mapOrphanTransactions.end())
|
||||
return;
|
||||
const CTransaction& tx = mapOrphanTransactions[hash];
|
||||
BOOST_FOREACH(const CTxIn& txin, tx.vin)
|
||||
BOOST_FOREACH(const CTxIn& txin, it->second.vin)
|
||||
{
|
||||
mapOrphanTransactionsByPrev[txin.prevout.hash].erase(hash);
|
||||
if (mapOrphanTransactionsByPrev[txin.prevout.hash].empty())
|
||||
mapOrphanTransactionsByPrev.erase(txin.prevout.hash);
|
||||
map<uint256, set<uint256> >::iterator itPrev = mapOrphanTransactionsByPrev.find(txin.prevout.hash);
|
||||
itPrev->second.erase(hash);
|
||||
if (itPrev->second.empty())
|
||||
mapOrphanTransactionsByPrev.erase(itPrev);
|
||||
}
|
||||
mapOrphanTransactions.erase(hash);
|
||||
mapOrphanTransactions.erase(it);
|
||||
}
|
||||
|
||||
unsigned int LimitOrphanTxSize(unsigned int nMaxOrphans)
|
||||
|
@ -3769,9 +3770,11 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv,
|
|||
// Recursively process any orphan transactions that depended on this one
|
||||
for (unsigned int i = 0; i < vWorkQueue.size(); i++)
|
||||
{
|
||||
uint256 hashPrev = vWorkQueue[i];
|
||||
for (set<uint256>::iterator mi = mapOrphanTransactionsByPrev[hashPrev].begin();
|
||||
mi != mapOrphanTransactionsByPrev[hashPrev].end();
|
||||
map<uint256, set<uint256> >::iterator itByPrev = mapOrphanTransactionsByPrev.find(vWorkQueue[i]);
|
||||
if (itByPrev == mapOrphanTransactionsByPrev.end())
|
||||
continue;
|
||||
for (set<uint256>::iterator mi = itByPrev->second.begin();
|
||||
mi != itByPrev->second.end();
|
||||
++mi)
|
||||
{
|
||||
const uint256& orphanHash = *mi;
|
||||
|
|
Loading…
Reference in a new issue