Changeset View
Changeset View
Standalone View
Standalone View
src/wallet/walletdb.cpp
Show First 20 Lines • Show All 959 Lines • ▼ Show 20 Lines | for (const std::shared_ptr<CWallet> &pwallet : GetWallets()) { | ||||
dbh.nLastFlushed = nUpdateCounter; | dbh.nLastFlushed = nUpdateCounter; | ||||
} | } | ||||
} | } | ||||
} | } | ||||
fOneThread = false; | fOneThread = false; | ||||
} | } | ||||
// | bool RecoverKeysOnlyFilter(void *callbackData, CDataStream ssKey, | ||||
// Try to (very carefully!) recover wallet file if there is a problem. | |||||
// | |||||
bool WalletBatch::Recover(const fs::path &wallet_path, void *callbackDataIn, | |||||
bool (*recoverKVcallback)(void *callbackData, | |||||
CDataStream ssKey, | |||||
CDataStream ssValue), | |||||
std::string &out_backup_filename) { | |||||
return BerkeleyBatch::Recover(wallet_path, callbackDataIn, | |||||
recoverKVcallback, out_backup_filename); | |||||
} | |||||
bool WalletBatch::Recover(const fs::path &wallet_path, | |||||
std::string &out_backup_filename) { | |||||
// recover without a key filter callback | |||||
// results in recovering all record types | |||||
return WalletBatch::Recover(wallet_path, nullptr, nullptr, | |||||
out_backup_filename); | |||||
} | |||||
bool WalletBatch::RecoverKeysOnlyFilter(void *callbackData, CDataStream ssKey, | |||||
CDataStream ssValue) { | CDataStream ssValue) { | ||||
CWallet *dummyWallet = reinterpret_cast<CWallet *>(callbackData); | CWallet *dummyWallet = reinterpret_cast<CWallet *>(callbackData); | ||||
std::string strType, strErr; | std::string strType, strErr; | ||||
bool fReadOK; | bool fReadOK; | ||||
{ | { | ||||
// Required in LoadKeyMetadata(): | // Required in LoadKeyMetadata(): | ||||
LOCK(dummyWallet->cs_wallet); | LOCK(dummyWallet->cs_wallet); | ||||
fReadOK = ReadKeyValue(dummyWallet, ssKey, ssValue, strType, strErr); | fReadOK = ReadKeyValue(dummyWallet, ssKey, ssValue, strType, strErr); | ||||
} | } | ||||
if (!IsKeyType(strType) && strType != DBKeys::HDCHAIN) { | if (!WalletBatch::IsKeyType(strType) && strType != DBKeys::HDCHAIN) { | ||||
return false; | return false; | ||||
} | } | ||||
if (!fReadOK) { | if (!fReadOK) { | ||||
LogPrintf("WARNING: WalletBatch::Recover skipping %s: %s\n", strType, | LogPrintf("WARNING: WalletBatch::Recover skipping %s: %s\n", strType, | ||||
strErr); | strErr); | ||||
return false; | return false; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 55 Lines • Show Last 20 Lines |