diff options
author | Andrew Chow <github@achow101.com> | 2022-11-28 17:01:50 -0500 |
---|---|---|
committer | Andrew Chow <github@achow101.com> | 2023-02-16 13:39:02 -0500 |
commit | dbfa34540372033d95036a02b7025ddd33f540aa (patch) | |
tree | b3155c37cd7bb26ef87092d140e8082a29e2f347 /src/wallet/rpc/wallet.cpp | |
parent | 7753efcbcf3ca2e1b46f167936e11cc580e28c7a (diff) | |
download | bitcoin-dbfa34540372033d95036a02b7025ddd33f540aa.tar.xz |
wallet: Allow MigrateLegacyToDescriptor to take a wallet name
An overload of MigrateLegacyToDescriptor is added which takes the wallet
name. The original that took a wallet pointer is still available, it
just gets the name, closes the wallet, and calls the new overload.
Diffstat (limited to 'src/wallet/rpc/wallet.cpp')
-rw-r--r-- | src/wallet/rpc/wallet.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/wallet/rpc/wallet.cpp b/src/wallet/rpc/wallet.cpp index 23a88cd51b..9af7723e31 100644 --- a/src/wallet/rpc/wallet.cpp +++ b/src/wallet/rpc/wallet.cpp @@ -738,16 +738,20 @@ static RPCHelpMan migratewallet() }, [&](const RPCHelpMan& self, const JSONRPCRequest& request) -> UniValue { - std::shared_ptr<CWallet> wallet = GetWalletForJSONRPCRequest(request); - if (!wallet) return NullUniValue; + std::string wallet_name; + { + std::shared_ptr<CWallet> wallet = GetWalletForJSONRPCRequest(request); + if (!wallet) return NullUniValue; - if (wallet->IsCrypted()) { - throw JSONRPCError(RPC_WALLET_WRONG_ENC_STATE, "Error: migratewallet on encrypted wallets is currently unsupported."); + if (wallet->IsCrypted()) { + throw JSONRPCError(RPC_WALLET_WRONG_ENC_STATE, "Error: migratewallet on encrypted wallets is currently unsupported."); + } + wallet_name = wallet->GetName(); } WalletContext& context = EnsureWalletContext(request.context); - util::Result<MigrationResult> res = MigrateLegacyToDescriptor(std::move(wallet), context); + util::Result<MigrationResult> res = MigrateLegacyToDescriptor(wallet_name, context); if (!res) { throw JSONRPCError(RPC_WALLET_ERROR, util::ErrorString(res).original); } |