From d34ec78664bb00b6cea4d33fd8b27eb45454f280 Mon Sep 17 00:00:00 2001 From: Alexander Block Date: Fri, 5 Apr 2019 08:05:00 +0200 Subject: [PATCH] Update wallet transactions when confirmed IS locks are removed --- src/llmq/quorums_instantsend.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/llmq/quorums_instantsend.cpp b/src/llmq/quorums_instantsend.cpp index 7f9b054958778..2aff53cf5321f 100644 --- a/src/llmq/quorums_instantsend.cpp +++ b/src/llmq/quorums_instantsend.cpp @@ -828,11 +828,12 @@ void CInstantSendManager::UpdatedBlockTip(const CBlockIndex* pindexNew) void CInstantSendManager::HandleFullyConfirmedBlock(const CBlockIndex* pindex) { + std::unordered_map removeISLocks; { LOCK(cs); - auto islocks = db.RemoveConfirmedInstantSendLocks(pindex->nHeight); - for (auto& p : islocks) { + removeISLocks = db.RemoveConfirmedInstantSendLocks(pindex->nHeight); + for (auto& p : removeISLocks) { auto& islockHash = p.first; auto& islock = p.second; LogPrint("instantsend", "CInstantSendManager::%s -- txid=%s, islock=%s: removed islock as it got fully confirmed\n", __func__, @@ -845,6 +846,10 @@ void CInstantSendManager::HandleFullyConfirmedBlock(const CBlockIndex* pindex) } } + for (auto& p : removeISLocks) { + UpdateWalletTransaction(p.second->txid, nullptr); + } + // Retry all not yet locked mempool TXs and TX which where mined after the fully confirmed block RetryLockTxs(uint256()); }