diff options
author | Jameson Lopp <jameson@team.casa> | 2021-07-01 10:17:28 -0400 |
---|---|---|
committer | Jameson Lopp <jameson.lopp@gmail.com> | 2021-07-03 07:31:27 -0400 |
commit | 78f4c8b98eada337346ffb206339c3ebae4ff43b (patch) | |
tree | 5f08795aaacdf50ee7cf7d5481d5f0173fbaab20 /src/validation.cpp | |
parent | 2749613020ed96a4e9204f8b98c44524b0a62d0d (diff) |
prefer to use txindex if available for GetTransaction
Fixes #22382
Diffstat (limited to 'src/validation.cpp')
-rw-r--r-- | src/validation.cpp | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/src/validation.cpp b/src/validation.cpp index df0ec3bd4f..6a145a088a 100644 --- a/src/validation.cpp +++ b/src/validation.cpp @@ -1159,6 +1159,20 @@ CTransactionRef GetTransaction(const CBlockIndex* const block_index, const CTxMe { LOCK(cs_main); + if (mempool && !block_index) { + CTransactionRef ptx = mempool->get(hash); + if (ptx) return ptx; + } + if (g_txindex) { + CTransactionRef tx; + uint256 block_hash; + if (g_txindex->FindTx(hash, block_hash, tx)) { + if (!block_index || block_index->GetBlockHash() == block_hash) { + hashBlock = block_hash; + return tx; + } + } + } if (block_index) { CBlock block; if (ReadBlockFromDisk(block, block_index, consensusParams)) { @@ -1169,15 +1183,6 @@ CTransactionRef GetTransaction(const CBlockIndex* const block_index, const CTxMe } } } - return nullptr; - } - if (mempool) { - CTransactionRef ptx = mempool->get(hash); - if (ptx) return ptx; - } - if (g_txindex) { - CTransactionRef tx; - if (g_txindex->FindTx(hash, hashBlock, tx)) return tx; } return nullptr; } |