wallet: Postpone NotifyWalletLoaded() for encrypted wallets

Too early NotifyWalletLoaded() call in CWallet::Create() results the
notification goes before DescriptorScriptPubKeyMans were created and
added to an encrypted wallet.

Co-authored-by: Andrew Chow <achow101-github@achow101.com>
pull/24711/head
Hennadii Stepanov 3 years ago
parent aeee419c6a
commit 0c12f0116c
No known key found for this signature in database
GPG Key ID: 410108112E7EA81F

@ -130,6 +130,8 @@ bool LoadWallets(WalletContext& context)
chain.initError(error); chain.initError(error);
return false; return false;
} }
NotifyWalletLoaded(context, pwallet);
AddWallet(context, pwallet); AddWallet(context, pwallet);
} }
return true; return true;

@ -54,6 +54,7 @@ static const std::shared_ptr<CWallet> TestLoadWallet(WalletContext& context)
std::vector<bilingual_str> warnings; std::vector<bilingual_str> warnings;
auto database = MakeWalletDatabase("", options, status, error); auto database = MakeWalletDatabase("", options, status, error);
auto wallet = CWallet::Create(context, "", std::move(database), options.create_flags, error, warnings); auto wallet = CWallet::Create(context, "", std::move(database), options.create_flags, error, warnings);
NotifyWalletLoaded(context, wallet);
if (context.chain) { if (context.chain) {
wallet->postInitProcess(); wallet->postInitProcess();
} }

@ -240,6 +240,8 @@ std::shared_ptr<CWallet> LoadWalletInternal(WalletContext& context, const std::s
status = DatabaseStatus::FAILED_LOAD; status = DatabaseStatus::FAILED_LOAD;
return nullptr; return nullptr;
} }
NotifyWalletLoaded(context, wallet);
AddWallet(context, wallet); AddWallet(context, wallet);
wallet->postInitProcess(); wallet->postInitProcess();
@ -356,6 +358,8 @@ std::shared_ptr<CWallet> CreateWallet(WalletContext& context, const std::string&
wallet->Lock(); wallet->Lock();
} }
} }
NotifyWalletLoaded(context, wallet);
AddWallet(context, wallet); AddWallet(context, wallet);
wallet->postInitProcess(); wallet->postInitProcess();
@ -2912,8 +2916,6 @@ std::shared_ptr<CWallet> CWallet::Create(WalletContext& context, const std::stri
return nullptr; return nullptr;
} }
NotifyWalletLoaded(context, walletInstance);
{ {
LOCK(walletInstance->cs_wallet); LOCK(walletInstance->cs_wallet);
walletInstance->SetBroadcastTransactions(args.GetBoolArg("-walletbroadcast", DEFAULT_WALLETBROADCAST)); walletInstance->SetBroadcastTransactions(args.GetBoolArg("-walletbroadcast", DEFAULT_WALLETBROADCAST));

Loading…
Cancel
Save