core: moan when we think an update is needed to get latest hard fork info

This commit is contained in:
moneromooo-monero 2015-09-13 18:09:57 +01:00
parent f85498422d
commit 8ffc508cef
No known key found for this signature in database
GPG key ID: 686F07454D6CEFC3
4 changed files with 35 additions and 0 deletions

View file

@ -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_db_blocks_per_sync = blocks_per_sync;
m_max_prepare_blocks_threads = maxthreads; m_max_prepare_blocks_threads = maxthreads;
} }
HardFork::State Blockchain::get_hard_fork_state() const
{
return m_hardfork.get_state();
}

View file

@ -159,6 +159,8 @@ namespace cryptonote
void set_show_time_stats(bool stats) { m_show_time_stats = stats; } void set_show_time_stats(bool stats) { m_show_time_stats = stats; }
HardFork::State get_hard_fork_state() const;
BlockchainDB& get_db() BlockchainDB& get_db()
{ {
return *m_db; return *m_db;

View file

@ -830,11 +830,37 @@ namespace cryptonote
#else #else
m_store_blockchain_interval.do_call(boost::bind(&blockchain_storage::store_blockchain, &m_blockchain_storage)); m_store_blockchain_interval.do_call(boost::bind(&blockchain_storage::store_blockchain, &m_blockchain_storage));
#endif #endif
m_fork_moaner.do_call(boost::bind(&core::check_fork_time, this));
m_miner.on_idle(); m_miner.on_idle();
m_mempool.on_idle(); m_mempool.on_idle();
return true; 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) void core::set_target_blockchain_height(uint64_t target_blockchain_height)
{ {
m_target_blockchain_height = target_blockchain_height; m_target_blockchain_height = target_blockchain_height;

View file

@ -167,6 +167,7 @@ namespace cryptonote
bool on_update_blocktemplate_interval(); bool on_update_blocktemplate_interval();
bool check_tx_inputs_keyimages_diff(const transaction& tx); bool check_tx_inputs_keyimages_diff(const transaction& tx);
void graceful_exit(); void graceful_exit();
bool check_fork_time();
static std::atomic<bool> m_fast_exit; static std::atomic<bool> m_fast_exit;
bool m_test_drop_download = true; bool m_test_drop_download = true;
uint64_t m_test_drop_download_height = 0; uint64_t m_test_drop_download_height = 0;
@ -185,6 +186,7 @@ namespace cryptonote
std::string m_config_folder; std::string m_config_folder;
cryptonote_protocol_stub m_protocol_stub; 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*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; friend class tx_validate_inputs;
std::atomic<bool> m_starter_message_showed; std::atomic<bool> m_starter_message_showed;