diff --git a/src/node/interfaces.cpp b/src/node/interfaces.cpp index f3eac13383ad..c47eb7aa9567 100644 --- a/src/node/interfaces.cpp +++ b/src/node/interfaces.cpp @@ -1477,9 +1477,16 @@ class ChainImpl : public Chain void requestMempoolTransactions(Notifications& notifications) override { if (!m_node.mempool) return; - LOCK2(::cs_main, m_node.mempool->cs); - for (const CTxMemPoolEntry& entry : m_node.mempool->mapTx) { - notifications.transactionAddedToMempool(entry.GetSharedTx(), /*nAcceptTime=*/0); + std::vector txs; + { + LOCK2(::cs_main, m_node.mempool->cs); + txs.reserve(m_node.mempool->mapTx.size()); + for (const CTxMemPoolEntry& entry : m_node.mempool->mapTx) { + txs.emplace_back(entry.GetSharedTx()); + } + } + for (const auto& tx : txs) { + notifications.transactionAddedToMempool(tx, /*nAcceptTime=*/0); } } bool hasAssumedValidChain() override diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index f1b18d0e4ead..70f23728695e 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -2011,7 +2011,7 @@ CWallet::ScanResult CWallet::ScanForWalletTransactions(const uint256& start_bloc } if (!max_height) { WalletLogPrintf("Scanning current mempool transactions.\n"); - WITH_LOCK(cs_wallet, chain().requestMempoolTransactions(*this)); + chain().requestMempoolTransactions(*this); } ShowProgress(strprintf("%s " + _("Rescanning…").translated, GetDisplayName()), 100); // hide progress dialog in GUI if (block_height && fAbortRescan) {