mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-08 10:31:50 -05:00
Merge #13658: [moveonly] Extract RescanWallet to handle a simple rescan
3fe836b78d
[moveonly] Extract RescanWallet to handle a simple rescan (Ben Woosley)
Pull request description:
Where the outcome does not depend on the result, apart from a simple
success check.
Tree-SHA512: e0d29c6fc0c7f99a730289e5a80deb586b2848aead56b5198a71ef01f65374812468dfd57be0b8b076eb9be4090d5101d28d979a1d5c3d2f1caeca77b303e90e
This commit is contained in:
commit
2d41af1728
2 changed files with 15 additions and 30 deletions
|
@ -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)
|
||||
|
|
|
@ -64,8 +64,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;
|
||||
|
|
Loading…
Add table
Reference in a new issue