aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Winget <tewinget@gmail.com>2014-09-30 15:24:43 -0400
committerThomas Winget <tewinget@gmail.com>2014-09-30 16:21:37 -0400
commitc0bdd511c3309e78488051f6a21b0b30ed25af44 (patch)
tree00fe3e23bac049dea9cf9eb90e4d2867a50b320c
parentvarious changes to runtime checkpoint updating (diff)
downloadmonero-c0bdd511c3309e78488051f6a21b0b30ed25af44.tar.xz
Daemon should now exit on conflicting checkpoints
If the "enforce DNS checkpoints" flag is not enabled, it should not exit if DNS checkpoints conflict with the others, but should still print a warning to the user.
-rw-r--r--src/cryptonote_core/cryptonote_core.cpp12
-rw-r--r--src/cryptonote_core/cryptonote_core.h1
2 files changed, 13 insertions, 0 deletions
diff --git a/src/cryptonote_core/cryptonote_core.cpp b/src/cryptonote_core/cryptonote_core.cpp
index c83e6e0a0..d9d8a7faf 100644
--- a/src/cryptonote_core/cryptonote_core.cpp
+++ b/src/cryptonote_core/cryptonote_core.cpp
@@ -41,6 +41,7 @@ using namespace epee;
#include "cryptonote_config.h"
#include "cryptonote_format_utils.h"
#include "misc_language.h"
+#include <csignal>
DISABLE_VS_WARNINGS(4355)
@@ -98,6 +99,12 @@ namespace cryptonote
res = m_blockchain_storage.update_checkpoints(m_checkpoints_path, false);
m_last_json_checkpoints_update = time(NULL);
}
+
+ // if anything fishy happened getting new checkpoints, bring down the house
+ if (!res)
+ {
+ graceful_exit();
+ }
return res;
}
//-----------------------------------------------------------------------------------
@@ -583,4 +590,9 @@ namespace cryptonote
uint64_t core::get_target_blockchain_height() const {
return m_target_blockchain_height;
}
+ //-----------------------------------------------------------------------------------------------
+ void core::graceful_exit()
+ {
+ raise(SIGTERM);
+ }
}
diff --git a/src/cryptonote_core/cryptonote_core.h b/src/cryptonote_core/cryptonote_core.h
index 0c697df80..10522451c 100644
--- a/src/cryptonote_core/cryptonote_core.h
+++ b/src/cryptonote_core/cryptonote_core.h
@@ -145,6 +145,7 @@ namespace cryptonote
bool handle_command_line(const boost::program_options::variables_map& vm, bool testnet);
bool on_update_blocktemplate_interval();
bool check_tx_inputs_keyimages_diff(const transaction& tx);
+ void graceful_exit();
tx_memory_pool m_mempool;