aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cryptonote_core/cryptonote_core.cpp48
-rw-r--r--src/daemon/core.h5
-rw-r--r--src/daemon/daemon.cpp3
3 files changed, 25 insertions, 31 deletions
diff --git a/src/cryptonote_core/cryptonote_core.cpp b/src/cryptonote_core/cryptonote_core.cpp
index 2fa339c31..29ea7c57b 100644
--- a/src/cryptonote_core/cryptonote_core.cpp
+++ b/src/cryptonote_core/cryptonote_core.cpp
@@ -231,6 +231,26 @@ namespace cryptonote
bool fast_sync = command_line::get_arg(vm, command_line::arg_fast_block_sync) != 0;
uint64_t blocks_threads = command_line::get_arg(vm, command_line::arg_prep_blocks_threads);
+ boost::filesystem::path folder(m_config_folder);
+ if (m_fakechain)
+ folder /= "fake";
+ //
+ // check for blockchain.bin
+ try
+ {
+ const boost::filesystem::path old_files = folder;
+ if (boost::filesystem::exists(old_files / "blockchain.bin"))
+ {
+ LOG_PRINT_RED_L0("Found old-style blockchain.bin in " << old_files.string());
+ LOG_PRINT_RED_L0("Monero now uses a new format. You can either remove blockchain.bin to start syncing");
+ LOG_PRINT_RED_L0("the blockchain anew, or use blockchain_export and blockchain_import to convert your");
+ LOG_PRINT_RED_L0("existing blockchain.bin to the new format. See README.md for instructions.");
+ return false;
+ }
+ }
+ // folder might not be a directory, etc, etc
+ catch (...) { }
+
BlockchainDB* db = nullptr;
uint64_t BDB_FAST_MODE = 0;
uint64_t BDB_FASTEST_MODE = 0;
@@ -257,37 +277,9 @@ namespace cryptonote
return false;
}
- boost::filesystem::path folder(m_config_folder);
-
- if (m_fakechain)
- folder /= "fake";
-
folder /= db->get_db_name();
-
LOG_PRINT_L0("Loading blockchain from folder " << folder.string() << " ...");
- // check for blockchain.bin
- bool old_blockchain_found = false;
- try
- {
- const boost::filesystem::path old_files = folder.parent_path();
- if (boost::filesystem::exists(folder.parent_path() / "blockchain.bin"))
- {
- LOG_PRINT_L0("Found old-style blockchain.bin in " << old_files.string());
- LOG_PRINT_L0("Monero now uses a new format. You can either remove blockchain.bin to start syncing");
- LOG_PRINT_L0("the blockchain anew, or use blockchain_export and blockchain_import to convert your");
- LOG_PRINT_L0("existing blockchain.bin to the new format. See README.md for instructions.");
- old_blockchain_found = true;
- }
- }
- // folder might not be a directory, etc, etc
- catch (...) {}
-
- if (old_blockchain_found)
- {
- throw DB_ERROR("Database could not be opened");
- }
-
const std::string filename = folder.string();
// temporarily default to fastest:async:1000
blockchain_db_sync_mode sync_mode = db_async;
diff --git a/src/daemon/core.h b/src/daemon/core.h
index ea76289dd..2208ef25a 100644
--- a/src/daemon/core.h
+++ b/src/daemon/core.h
@@ -66,15 +66,16 @@ public:
m_core.set_cryptonote_protocol(&protocol);
}
- void run()
+ bool run()
{
//initialize core here
LOG_PRINT_L0("Initializing core...");
if (!m_core.init(m_vm_HACK))
{
- throw std::runtime_error("Failed to initialize core");
+ return false;
}
LOG_PRINT_L0("Core initialized OK");
+ return true;
}
cryptonote::core & get()
diff --git a/src/daemon/daemon.cpp b/src/daemon/daemon.cpp
index 6093ecdf8..ed6a66722 100644
--- a/src/daemon/daemon.cpp
+++ b/src/daemon/daemon.cpp
@@ -118,7 +118,8 @@ bool t_daemon::run(bool interactive)
try
{
- mp_internals->core.run();
+ if (!mp_internals->core.run())
+ return false;
mp_internals->rpc.run();
daemonize::t_command_server* rpc_commands;