Skip to content

Commit be375b2

Browse files
committed
Merge #19919: bugfix: make LoadWallet assigns status always
8b39a87 bugfix: make LoadWallet assigns status always (Akio Nakamura) Pull request description: In my enviroment, ```test/functional/wallet_multiwallet.py``` failed in line 237 for master( 147d50d ). It got an expected rpc-error-message, but error code was not (-4) but (-18). This is because that although loadwallet() in rpcwallet.cpp assumes LoadWallet() always assign some value to the 'status', but LoadWallet() does not do so in some situation. This PR intends to fix above and prevends loadwallet() returns ambiguous error code. ACKs for top commit: hebasto: re-ACK 8b39a87, that is the same as 1728059730abef04f3fa84de0b6e20044be7a9d6. ryanofsky: Code review ACK 8b39a87 (same as previous) meshcollider: utACK 8b39a87 Tree-SHA512: a75d8240f60325bfdb69a07d392269fec97de743f38fe108371eb63a0aba5d8ce3cc484ecc69e81febf8040f5ab64f3a9450b98f8e07a0c17803784bb6f342bf
2 parents f2d9934 + 8b39a87 commit be375b2

File tree

2 files changed

+4
-0
lines changed

2 files changed

+4
-0
lines changed

src/wallet/db.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,7 @@ enum class DatabaseStatus {
212212
FAILED_ALREADY_EXISTS,
213213
FAILED_NOT_FOUND,
214214
FAILED_CREATE,
215+
FAILED_LOAD,
215216
FAILED_VERIFY,
216217
FAILED_ENCRYPT,
217218
};

src/wallet/wallet.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,7 @@ std::shared_ptr<CWallet> LoadWalletInternal(interfaces::Chain& chain, const std:
212212
std::shared_ptr<CWallet> wallet = CWallet::Create(chain, name, std::move(database), options.create_flags, error, warnings);
213213
if (!wallet) {
214214
error = Untranslated("Wallet loading failed.") + Untranslated(" ") + error;
215+
status = DatabaseStatus::FAILED_LOAD;
215216
return nullptr;
216217
}
217218
AddWallet(wallet);
@@ -223,6 +224,7 @@ std::shared_ptr<CWallet> LoadWalletInternal(interfaces::Chain& chain, const std:
223224
return wallet;
224225
} catch (const std::runtime_error& e) {
225226
error = Untranslated(e.what());
227+
status = DatabaseStatus::FAILED_LOAD;
226228
return nullptr;
227229
}
228230
}
@@ -233,6 +235,7 @@ std::shared_ptr<CWallet> LoadWallet(interfaces::Chain& chain, const std::string&
233235
auto result = WITH_LOCK(g_loading_wallet_mutex, return g_loading_wallet_set.insert(name));
234236
if (!result.second) {
235237
error = Untranslated("Wallet already being loading.");
238+
status = DatabaseStatus::FAILED_LOAD;
236239
return nullptr;
237240
}
238241
auto wallet = LoadWalletInternal(chain, name, load_on_start, options, status, error, warnings);

0 commit comments

Comments
 (0)