aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormoneromooo-monero <moneromooo-monero@users.noreply.github.com>2015-09-13 18:09:57 +0100
committermoneromooo-monero <moneromooo-monero@users.noreply.github.com>2015-09-13 18:09:57 +0100
commit8ffc508cef31002942e5548270f55093a4562eb5 (patch)
tree5b1bd8a24ce184e2b27e12d76fccaf79d88f7976 /src
parentblockchain: use the new hardfork class (diff)
downloadmonero-8ffc508cef31002942e5548270f55093a4562eb5.tar.xz
core: moan when we think an update is needed to get latest hard fork info
Diffstat (limited to 'src')
-rw-r--r--src/cryptonote_core/blockchain.cpp5
-rw-r--r--src/cryptonote_core/blockchain.h2
-rw-r--r--src/cryptonote_core/cryptonote_core.cpp26
-rw-r--r--src/cryptonote_core/cryptonote_core.h2
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;