aboutsummaryrefslogtreecommitdiff
path: root/src/init.cpp
diff options
context:
space:
mode:
authorJonas Schnelli <jonas.schnelli@include7.ch>2015-02-04 21:19:27 +0100
committerWladimir J. van der Laan <laanwj@gmail.com>2015-03-20 16:23:39 +0100
commit2bb1c87700a80f0b20b4b2cbd68a0d82a18dbcc0 (patch)
tree61bdf899e90c96abd096c3c0abd5fdbd54369eff /src/init.cpp
parent05f17d4eaa9e74836d5736d50e456420949f2732 (diff)
refactor: move bdb (bitdb) interaction from init.cpp to wallet.cpp
this will remove db.h from init.cpp
Diffstat (limited to 'src/init.cpp')
-rw-r--r--src/init.cpp57
1 files changed, 13 insertions, 44 deletions
diff --git a/src/init.cpp b/src/init.cpp
index a930a97a94..95ec45015f 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -24,7 +24,6 @@
#include "util.h"
#include "utilmoneystr.h"
#ifdef ENABLE_WALLET
-#include "wallet/db.h"
#include "wallet/wallet.h"
#include "wallet/walletdb.h"
#endif
@@ -151,7 +150,7 @@ void Shutdown()
StopRPCThreads();
#ifdef ENABLE_WALLET
if (pwalletMain)
- bitdb.Flush(false);
+ pwalletMain->Flush(false);
GenerateBitcoins(false, NULL, 0);
#endif
StopNode();
@@ -184,7 +183,7 @@ void Shutdown()
}
#ifdef ENABLE_WALLET
if (pwalletMain)
- bitdb.Flush(true);
+ pwalletMain->Flush(true);
#endif
#ifndef WIN32
boost::filesystem::remove(GetPidFile());
@@ -852,47 +851,17 @@ bool AppInit2(boost::thread_group& threadGroup)
LogPrintf("Using wallet %s\n", strWalletFile);
uiInterface.InitMessage(_("Verifying wallet..."));
- if (!bitdb.Open(GetDataDir()))
- {
- // try moving the database env out of the way
- boost::filesystem::path pathDatabase = GetDataDir() / "database";
- boost::filesystem::path pathDatabaseBak = GetDataDir() / strprintf("database.%d.bak", GetTime());
- try {
- boost::filesystem::rename(pathDatabase, pathDatabaseBak);
- LogPrintf("Moved old %s to %s. Retrying.\n", pathDatabase.string(), pathDatabaseBak.string());
- } catch (const boost::filesystem::filesystem_error&) {
- // failure is ok (well, not really, but it's not worse than what we started with)
- }
-
- // try again
- if (!bitdb.Open(GetDataDir())) {
- // if it still fails, it probably means we can't even create the database env
- string msg = strprintf(_("Error initializing wallet database environment %s!"), strDataDir);
- return InitError(msg);
- }
- }
-
- if (GetBoolArg("-salvagewallet", false))
- {
- // Recover readable keypairs:
- if (!CWalletDB::Recover(bitdb, strWalletFile, true))
- return false;
- }
-
- if (boost::filesystem::exists(GetDataDir() / strWalletFile))
- {
- CDBEnv::VerifyResult r = bitdb.Verify(strWalletFile, CWalletDB::Recover);
- if (r == CDBEnv::RECOVER_OK)
- {
- string msg = strprintf(_("Warning: wallet.dat corrupt, data salvaged!"
- " Original wallet.dat saved as wallet.{timestamp}.bak in %s; if"
- " your balance or transactions are incorrect you should"
- " restore from a backup."), strDataDir);
- InitWarning(msg);
- }
- if (r == CDBEnv::RECOVER_FAIL)
- return InitError(_("wallet.dat corrupt, salvage failed"));
- }
+ std::string warningString;
+ std::string errorString;
+
+ if (!CWallet::Verify(strWalletFile, warningString, errorString))
+ return false;
+
+ if (!warningString.empty())
+ InitWarning(warningString);
+ if (!errorString.empty())
+ return InitError(warningString);
+
} // (!fDisableWallet)
#endif // ENABLE_WALLET
// ********************************************************* Step 6: network initialization