From 97e28029c94bc187721242a8c59468cebd73441b Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Thu, 3 Nov 2016 14:53:12 -0400 Subject: [PATCH] Erase orphans per-transaction instead of per-block --- src/main.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/main.cpp b/src/main.cpp index d587b39e6..a5b008136 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -3088,8 +3088,8 @@ bool ActivateBestChain(CValidationState &state, const CChainParams& chainparams, // Remove orphan transactions with cs_main { LOCK(cs_main); - std::vector vOrphanErase; for(unsigned int i = 0; i < txChanged.size(); i++) { + std::vector vOrphanErase; const CTransaction& tx = std::get<0>(txChanged[i]); // Which orphan pool entries must we evict? for (size_t j = 0; j < tx.vin.size(); j++) { @@ -3101,14 +3101,15 @@ bool ActivateBestChain(CValidationState &state, const CChainParams& chainparams, vOrphanErase.push_back(orphanHash); } } - } - // Erase orphan transactions include or precluded by this block - if (vOrphanErase.size()) { - int nErased = 0; - BOOST_FOREACH(uint256 &orphanHash, vOrphanErase) { - nErased += EraseOrphanTx(orphanHash); + + // Erase orphan transactions include or precluded by this block + if (vOrphanErase.size()) { + int nErased = 0; + BOOST_FOREACH(uint256 &orphanHash, vOrphanErase) { + nErased += EraseOrphanTx(orphanHash); + } + LogPrint("mempool", "Erased %d orphan tx included or conflicted by block\n", nErased); } - LogPrint("mempool", "Erased %d orphan tx included or conflicted by block\n", nErased); } }