diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp index 497a4120e5..891d650ad3 100644 --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -2647,6 +2647,7 @@ static UniValue createwallet(const JSONRPCRequest& request) DatabaseOptions options; DatabaseStatus status; + options.require_create = true; options.create_flags = flags; options.create_passphrase = passphrase; bilingual_str error; diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp index 1751cbf5bc..0d07904924 100644 --- a/src/wallet/wallet.cpp +++ b/src/wallet/wallet.cpp @@ -253,13 +253,6 @@ std::shared_ptr CreateWallet(interfaces::Chain& chain, const std::strin wallet_creation_flags |= WALLET_FLAG_BLANK_WALLET; } - // Check the wallet file location - if (fs::symlink_status(fs::absolute(name.empty() ? "wallet.dat" : name, GetWalletDir())).type() != fs::file_not_found) { - error = strprintf(Untranslated("Wallet %s already exists."), name); - status = DatabaseStatus::FAILED_CREATE; - return nullptr; - } - // Wallet::Verify will check if we're trying to create a wallet with a duplicate name. std::unique_ptr database = MakeWalletDatabase(name, options, status, error); if (!database) { diff --git a/test/functional/wallet_multiwallet.py b/test/functional/wallet_multiwallet.py index 168d6be42c..d64d3dcb49 100755 --- a/test/functional/wallet_multiwallet.py +++ b/test/functional/wallet_multiwallet.py @@ -273,7 +273,8 @@ class MultiWalletTest(BitcoinTestFramework): self.log.info("Test dynamic wallet creation.") # Fail to create a wallet if it already exists. - assert_raises_rpc_error(-4, "Wallet w2 already exists.", self.nodes[0].createwallet, 'w2') + path = os.path.join(self.options.tmpdir, "node0", "regtest", "wallets", "w2") + assert_raises_rpc_error(-4, "Failed to create database path '{}'. Database already exists.".format(path), self.nodes[0].createwallet, 'w2') # Successfully create a wallet with a new name loadwallet_name = self.nodes[0].createwallet('w9')