diff options
author | Ben Woosley <ben.woosley@gmail.com> | 2018-07-13 11:49:24 -0400 |
---|---|---|
committer | Ben Woosley <ben.woosley@gmail.com> | 2018-07-14 12:42:28 -0400 |
commit | 3fe836b78d504942e8850b607453886969f57e27 (patch) | |
tree | 908ed2b2e53c8a2ec6a28bb0b1eafcbbee28f02c /src/wallet | |
parent | b25a4c2284babdf1e8cf0ec3b1402200dd25f33f (diff) | |
download | bitcoin-3fe836b78d504942e8850b607453886969f57e27.tar.xz |
[moveonly] Extract RescanWallet to handle a simple rescan
Where the outcome does not depend on the result, apart from a simple
success check.
Diffstat (limited to 'src/wallet')
-rw-r--r-- | src/wallet/rpcdump.cpp | 43 | ||||
-rw-r--r-- | src/wallet/wallet.h | 2 |
2 files changed, 15 insertions, 30 deletions
diff --git a/src/wallet/rpcdump.cpp b/src/wallet/rpcdump.cpp index 882ddbbe4e..c8e04b35bd 100644 --- a/src/wallet/rpcdump.cpp +++ b/src/wallet/rpcdump.cpp @@ -86,6 +86,17 @@ static bool GetWalletAddressesForKey(CWallet * const pwallet, const CKeyID &keyi return fLabelFound; } +static const int64_t TIMESTAMP_MIN = 0; + +static void RescanWallet(CWallet& wallet, const WalletRescanReserver& reserver, int64_t time_begin = TIMESTAMP_MIN, bool update = true) +{ + int64_t scanned_time = wallet.RescanFromTime(time_begin, reserver, update); + if (wallet.IsAbortingRescan()) { + throw JSONRPCError(RPC_MISC_ERROR, "Rescan aborted by user."); + } else if (scanned_time > time_begin) { + throw JSONRPCError(RPC_WALLET_ERROR, "Rescan was unable to fully rescan the blockchain. Some transactions may be missing."); + } +} UniValue importprivkey(const JSONRPCRequest& request) { @@ -172,13 +183,7 @@ UniValue importprivkey(const JSONRPCRequest& request) } } if (fRescan) { - int64_t scanned_time = pwallet->RescanFromTime(TIMESTAMP_MIN, reserver, true /* update */); - if (pwallet->IsAbortingRescan()) { - throw JSONRPCError(RPC_MISC_ERROR, "Rescan aborted by user."); - } - if (scanned_time > TIMESTAMP_MIN) { - throw JSONRPCError(RPC_WALLET_ERROR, "Rescan was unable to fully rescan the blockchain. Some transactions may be missing."); - } + RescanWallet(*pwallet, reserver); } return NullUniValue; @@ -318,13 +323,7 @@ UniValue importaddress(const JSONRPCRequest& request) } if (fRescan) { - int64_t scanned_time = pwallet->RescanFromTime(TIMESTAMP_MIN, reserver, true /* update */); - if (pwallet->IsAbortingRescan()) { - throw JSONRPCError(RPC_MISC_ERROR, "Rescan aborted by user."); - } - if (scanned_time > TIMESTAMP_MIN) { - throw JSONRPCError(RPC_WALLET_ERROR, "Rescan was unable to fully rescan the blockchain. Some transactions may be missing."); - } + RescanWallet(*pwallet, reserver); pwallet->ReacceptWalletTransactions(); } @@ -496,13 +495,7 @@ UniValue importpubkey(const JSONRPCRequest& request) } if (fRescan) { - int64_t scanned_time = pwallet->RescanFromTime(TIMESTAMP_MIN, reserver, true /* update */); - if (pwallet->IsAbortingRescan()) { - throw JSONRPCError(RPC_MISC_ERROR, "Rescan aborted by user."); - } - if (scanned_time > TIMESTAMP_MIN) { - throw JSONRPCError(RPC_WALLET_ERROR, "Rescan was unable to fully rescan the blockchain. Some transactions may be missing."); - } + RescanWallet(*pwallet, reserver); pwallet->ReacceptWalletTransactions(); } @@ -630,13 +623,7 @@ UniValue importwallet(const JSONRPCRequest& request) pwallet->UpdateTimeFirstKey(nTimeBegin); } uiInterface.ShowProgress("", 100, false); // hide progress dialog in GUI - int64_t scanned_time = pwallet->RescanFromTime(nTimeBegin, reserver, false /* update */); - if (pwallet->IsAbortingRescan()) { - throw JSONRPCError(RPC_MISC_ERROR, "Rescan aborted by user."); - } - if (scanned_time > nTimeBegin) { - throw JSONRPCError(RPC_WALLET_ERROR, "Rescan was unable to fully rescan the blockchain. Some transactions may be missing."); - } + RescanWallet(*pwallet, reserver, nTimeBegin, false /* update */); pwallet->MarkDirty(); if (!fGood) diff --git a/src/wallet/wallet.h b/src/wallet/wallet.h index 2e53ca0c55..6394ce1c23 100644 --- a/src/wallet/wallet.h +++ b/src/wallet/wallet.h @@ -62,8 +62,6 @@ static const bool DEFAULT_WALLET_RBF = false; static const bool DEFAULT_WALLETBROADCAST = true; static const bool DEFAULT_DISABLE_WALLET = false; -static const int64_t TIMESTAMP_MIN = 0; - class CBlockIndex; class CCoinControl; class COutput; |