diff options
author | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2015-09-13 18:09:57 +0100 |
---|---|---|
committer | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2015-09-13 18:09:57 +0100 |
commit | 8ffc508cef31002942e5548270f55093a4562eb5 (patch) | |
tree | 5b1bd8a24ce184e2b27e12d76fccaf79d88f7976 | |
parent | blockchain: use the new hardfork class (diff) | |
download | monero-8ffc508cef31002942e5548270f55093a4562eb5.tar.xz |
core: moan when we think an update is needed to get latest hard fork info
-rw-r--r-- | src/cryptonote_core/blockchain.cpp | 5 | ||||
-rw-r--r-- | src/cryptonote_core/blockchain.h | 2 | ||||
-rw-r--r-- | src/cryptonote_core/cryptonote_core.cpp | 26 | ||||
-rw-r--r-- | src/cryptonote_core/cryptonote_core.h | 2 |
4 files changed, 35 insertions, 0 deletions
diff --git a/src/cryptonote_core/blockchain.cpp b/src/cryptonote_core/blockchain.cpp index 81612f9a5..dfaae85b9 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 4693d4164..967745c46 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 4d90eec1e..0769dbb69 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 d700b3b47..8e134e080 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<bool> 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<bool> m_starter_message_showed; |