diff options
| author | Andrew Chow <[email protected]> | 2019-10-07 14:11:34 -0400 |
|---|---|---|
| committer | Andrew Chow <[email protected]> | 2019-11-01 22:58:05 -0400 |
| commit | 46865ec958b6b9bde04a827de598975f14bdb5e7 (patch) | |
| tree | 820071f22facdbed71b278f78b22a4e4543ba176 /src/wallet/scriptpubkeyman.cpp | |
| parent | Refactor: Move GetMetadata code out of getaddressinfo (diff) | |
| download | discoin-46865ec958b6b9bde04a827de598975f14bdb5e7.tar.xz discoin-46865ec958b6b9bde04a827de598975f14bdb5e7.zip | |
Refactor: Move MarkUnusedAddresses code out of CWallet::AddToWalletIfInvolvingMe
This commit does not change behavior.
Diffstat (limited to 'src/wallet/scriptpubkeyman.cpp')
| -rw-r--r-- | src/wallet/scriptpubkeyman.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/wallet/scriptpubkeyman.cpp b/src/wallet/scriptpubkeyman.cpp index 8041a28d6..a866b5e4c 100644 --- a/src/wallet/scriptpubkeyman.cpp +++ b/src/wallet/scriptpubkeyman.cpp @@ -287,6 +287,23 @@ bool LegacyScriptPubKeyMan::TopUp(unsigned int size) return TopUpKeyPool(size); } +void LegacyScriptPubKeyMan::MarkUnusedAddresses(const CScript& script) +{ + AssertLockHeld(cs_wallet); + // extract addresses and check if they match with an unused keypool key + for (const auto& keyid : GetAffectedKeys(script, *this)) { + std::map<CKeyID, int64_t>::const_iterator mi = m_pool_key_to_index.find(keyid); + if (mi != m_pool_key_to_index.end()) { + WalletLogPrintf("%s: Detected a used keypool key, mark all keypool key up to this key as used\n", __func__); + MarkReserveKeysAsUsed(mi->second); + + if (!TopUpKeyPool()) { + WalletLogPrintf("%s: Topping up keypool failed (locked wallet)\n", __func__); + } + } + } +} + void LegacyScriptPubKeyMan::UpgradeKeyMetadata() { AssertLockHeld(cs_wallet); |