From 8ffc508cef31002942e5548270f55093a4562eb5 Mon Sep 17 00:00:00 2001 From: moneromooo-monero Date: Sun, 13 Sep 2015 18:09:57 +0100 Subject: [PATCH] core: moan when we think an update is needed to get latest hard fork info --- src/cryptonote_core/blockchain.cpp | 5 +++++ src/cryptonote_core/blockchain.h | 2 ++ src/cryptonote_core/cryptonote_core.cpp | 26 +++++++++++++++++++++++++ src/cryptonote_core/cryptonote_core.h | 2 ++ 4 files changed, 35 insertions(+) diff --git a/src/cryptonote_core/blockchain.cpp b/src/cryptonote_core/blockchain.cpp index 81612f9a..dfaae85b 100644 --- a/src/cryptonote_core/blockchain.cpp +++ b/src/cryptonote_core/blockchain.cpp @@ -3074,3 +3074,8 @@ void Blockchain::set_user_options(uint64_t maxthreads, uint64_t blocks_per_sync, m_db_blocks_per_sync = blocks_per_sync; m_max_prepare_blocks_threads = maxthreads; } + +HardFork::State Blockchain::get_hard_fork_state() const +{ + return m_hardfork.get_state(); +} diff --git a/src/cryptonote_core/blockchain.h b/src/cryptonote_core/blockchain.h index 4693d416..967745c4 100644 --- a/src/cryptonote_core/blockchain.h +++ b/src/cryptonote_core/blockchain.h @@ -159,6 +159,8 @@ namespace cryptonote void set_show_time_stats(bool stats) { m_show_time_stats = stats; } + HardFork::State get_hard_fork_state() const; + BlockchainDB& get_db() { return *m_db; diff --git a/src/cryptonote_core/cryptonote_core.cpp b/src/cryptonote_core/cryptonote_core.cpp index 4d90eec1..0769dbb6 100644 --- a/src/cryptonote_core/cryptonote_core.cpp +++ b/src/cryptonote_core/cryptonote_core.cpp @@ -830,11 +830,37 @@ namespace cryptonote #else m_store_blockchain_interval.do_call(boost::bind(&blockchain_storage::store_blockchain, &m_blockchain_storage)); #endif + m_fork_moaner.do_call(boost::bind(&core::check_fork_time, this)); m_miner.on_idle(); m_mempool.on_idle(); return true; } //----------------------------------------------------------------------------------------------- + bool core::check_fork_time() + { +#if BLOCKCHAIN_DB == DB_LMDB + HardFork::State state = m_blockchain_storage.get_hard_fork_state(); + switch (state) { + case HardFork::LikelyForked: + LOG_PRINT_L0(ENDL + << "**********************************************************************" << ENDL + << "Last scheduled hard fork is too far in the past." << ENDL + << "We are most likely forked from the network. Daemon update needed now." << ENDL + << "**********************************************************************" << ENDL); + break; + case HardFork::UpdateNeeded: + LOG_PRINT_L0(ENDL + << "**********************************************************************" << ENDL + << "Last scheduled hard fork time shows a daemon update is needed now." << ENDL + << "**********************************************************************" << ENDL); + break; + default: + break; + } +#endif + return true; + } + //----------------------------------------------------------------------------------------------- void core::set_target_blockchain_height(uint64_t target_blockchain_height) { m_target_blockchain_height = target_blockchain_height; diff --git a/src/cryptonote_core/cryptonote_core.h b/src/cryptonote_core/cryptonote_core.h index d700b3b4..8e134e08 100644 --- a/src/cryptonote_core/cryptonote_core.h +++ b/src/cryptonote_core/cryptonote_core.h @@ -167,6 +167,7 @@ namespace cryptonote bool on_update_blocktemplate_interval(); bool check_tx_inputs_keyimages_diff(const transaction& tx); void graceful_exit(); + bool check_fork_time(); static std::atomic m_fast_exit; bool m_test_drop_download = true; uint64_t m_test_drop_download_height = 0; @@ -185,6 +186,7 @@ namespace cryptonote std::string m_config_folder; cryptonote_protocol_stub m_protocol_stub; epee::math_helper::once_a_time_seconds<60*60*12, false> m_store_blockchain_interval; + epee::math_helper::once_a_time_seconds<60*60*2, false> m_fork_moaner; friend class tx_validate_inputs; std::atomic m_starter_message_showed;