Changeset View
Changeset View
Standalone View
Standalone View
src/wallet/bdb.cpp
Show First 20 Lines • Show All 255 Lines • ▼ Show 20 Lines | if (ret > 0) { | ||||
"database environment.", | "database environment.", | ||||
ret)); | ret)); | ||||
} | } | ||||
fDbEnvInit = true; | fDbEnvInit = true; | ||||
fMockDb = true; | fMockDb = true; | ||||
} | } | ||||
bool BerkeleyEnvironment::Verify(const std::string &strFile) { | |||||
LOCK(cs_db); | |||||
assert(mapFileUseCount.count(strFile) == 0); | |||||
Db db(dbenv.get(), 0); | |||||
int result = db.verify(strFile.c_str(), nullptr, nullptr, 0); | |||||
return result == 0; | |||||
} | |||||
BerkeleyBatch::SafeDbt::SafeDbt() { | BerkeleyBatch::SafeDbt::SafeDbt() { | ||||
m_dbt.set_flags(DB_DBT_MALLOC); | m_dbt.set_flags(DB_DBT_MALLOC); | ||||
} | } | ||||
BerkeleyBatch::SafeDbt::SafeDbt(void *data, size_t size) : m_dbt(data, size) {} | BerkeleyBatch::SafeDbt::SafeDbt(void *data, size_t size) : m_dbt(data, size) {} | ||||
BerkeleyBatch::SafeDbt::~SafeDbt() { | BerkeleyBatch::SafeDbt::~SafeDbt() { | ||||
if (m_dbt.get_data() != nullptr) { | if (m_dbt.get_data() != nullptr) { | ||||
Show All 28 Lines | LogPrintf("Using BerkeleyDB version %s\n", | ||||
DbEnv::version(nullptr, nullptr, nullptr)); | DbEnv::version(nullptr, nullptr, nullptr)); | ||||
LogPrintf("Using wallet %s\n", file_path.string()); | LogPrintf("Using wallet %s\n", file_path.string()); | ||||
if (!env->Open(errorStr)) { | if (!env->Open(errorStr)) { | ||||
return false; | return false; | ||||
} | } | ||||
if (fs::exists(file_path)) { | if (fs::exists(file_path)) { | ||||
if (!env->Verify(strFile)) { | LOCK(cs_db); | ||||
assert(env->mapFileUseCount.count(strFile) == 0); | |||||
Db db(env->dbenv.get(), 0); | |||||
int result = db.verify(strFile.c_str(), nullptr, nullptr, 0); | |||||
if (result != 0) { | |||||
errorStr = | errorStr = | ||||
strprintf(_("%s corrupt. Try using the wallet tool " | strprintf(_("%s corrupt. Try using the wallet tool " | ||||
"bitcoin-wallet to salvage or restoring a backup."), | "bitcoin-wallet to salvage or restoring a backup."), | ||||
file_path); | file_path); | ||||
return false; | return false; | ||||
} | } | ||||
} | } | ||||
// also return true if files does not exists | // also return true if files does not exists | ||||
▲ Show 20 Lines • Show All 616 Lines • Show Last 20 Lines |