diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -50,14 +50,23 @@ return res; } -std::shared_ptr -GetWalletForJSONRPCRequest(const JSONRPCRequest &request) { +bool GetWalletNameFromJSONRPCRequest(const JSONRPCRequest &request, + std::string &wallet_name) { if (request.URI.substr(0, WALLET_ENDPOINT_BASE.size()) == WALLET_ENDPOINT_BASE) { // wallet endpoint was used - std::string requestedWallet = + wallet_name = urlDecode(request.URI.substr(WALLET_ENDPOINT_BASE.size())); - std::shared_ptr pwallet = GetWallet(requestedWallet); + return true; + } + return false; +} + +std::shared_ptr +GetWalletForJSONRPCRequest(const JSONRPCRequest &request) { + std::string wallet_name; + if (GetWalletNameFromJSONRPCRequest(request, wallet_name)) { + std::shared_ptr pwallet = GetWallet(wallet_name); if (!pwallet) { throw JSONRPCError( RPC_WALLET_NOT_FOUND,