diff options
| author | Wladimir J. van der Laan <[email protected]> | 2018-09-10 18:19:02 +0200 |
|---|---|---|
| committer | Wladimir J. van der Laan <[email protected]> | 2018-09-10 18:32:00 +0200 |
| commit | e0a4f9de7fbb675dcc7207f91b60b66f14dc227a (patch) | |
| tree | 9114fd91d68206ce0079ce6b81b21dd063990dbe /src/validation.cpp | |
| parent | Merge #14008: Preserve a format of RPC command definitions (diff) | |
| parent | tx pool: Use class methods to hide raw map iterator impl details (diff) | |
| download | discoin-e0a4f9de7fbb675dcc7207f91b60b66f14dc227a.tar.xz discoin-e0a4f9de7fbb675dcc7207f91b60b66f14dc227a.zip | |
Merge #13793: tx pool: Use class methods to hide raw map iterator impl details
faa1a749428a195af784633eb78e1df5d6a0e875 tx pool: Use class methods to hide raw map iterator impl details (MarcoFalke)
Pull request description:
ATMP et al would often use map iterator implementation details such as `end()` or `find()`, which is acceptable in current code.
However, this not only makes it impossible to turn the maps into private members in the future but also makes it harder to replace the maps with different data structures.
This is required for and split off of #13804
Tree-SHA512: 4f9017fd1d98d9df49d25bba92655a4a97755eea161fd1cbb565ceb81bbc2b4924129d214f8a29563a77e3d8eef85a67c81245ecdc9a9e5292d419922a93cb88
Diffstat (limited to 'src/validation.cpp')
| -rw-r--r-- | src/validation.cpp | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/src/validation.cpp b/src/validation.cpp index 7ec0c6a96..2ad242261 100644 --- a/src/validation.cpp +++ b/src/validation.cpp @@ -602,10 +602,8 @@ static bool AcceptToMemoryPoolWorker(const CChainParams& chainparams, CTxMemPool std::set<uint256> setConflicts; for (const CTxIn &txin : tx.vin) { - auto itConflicting = pool.mapNextTx.find(txin.prevout); - if (itConflicting != pool.mapNextTx.end()) - { - const CTransaction *ptxConflicting = itConflicting->second; + const CTransaction* ptxConflicting = pool.GetConflictTx(txin.prevout); + if (ptxConflicting) { if (!setConflicts.count(ptxConflicting->GetHash())) { // Allow opt-out of transaction replacement by setting @@ -786,16 +784,8 @@ static bool AcceptToMemoryPoolWorker(const CChainParams& chainparams, CTxMemPool CFeeRate newFeeRate(nModifiedFees, nSize); std::set<uint256> setConflictsParents; const int maxDescendantsToVisit = 100; - CTxMemPool::setEntries setIterConflicting; - for (const uint256 &hashConflicting : setConflicts) - { - CTxMemPool::txiter mi = pool.mapTx.find(hashConflicting); - if (mi == pool.mapTx.end()) - continue; - - // Save these to avoid repeated lookups - setIterConflicting.insert(mi); - + const CTxMemPool::setEntries setIterConflicting = pool.GetIterSet(setConflicts); + for (const auto& mi : setIterConflicting) { // Don't allow the replacement to reduce the feerate of the // mempool. // @@ -861,11 +851,12 @@ static bool AcceptToMemoryPoolWorker(const CChainParams& chainparams, CTxMemPool // Rather than check the UTXO set - potentially expensive - // it's cheaper to just check if the new input refers to a // tx that's in the mempool. - if (pool.mapTx.find(tx.vin[j].prevout.hash) != pool.mapTx.end()) + if (pool.exists(tx.vin[j].prevout.hash)) { return state.DoS(0, false, REJECT_NONSTANDARD, "replacement-adds-unconfirmed", false, strprintf("replacement %s adds unconfirmed input, idx %d", hash.ToString(), j)); + } } } |