cryptonote_protocol: print peer versions when unexpected

also avoid integer underflow on zero height
This commit is contained in:
moneromooo-monero 2017-12-07 21:39:48 +00:00
parent 490a5d41ca
commit 25584f8639
No known key found for this signature in database
GPG Key ID: 686F07454D6CEFC3
1 changed files with 10 additions and 6 deletions

View File

@ -266,13 +266,17 @@ namespace cryptonote
return true; return true;
// from v6, if the peer advertises a top block version, reject if it's not what it should be (will only work if no voting) // from v6, if the peer advertises a top block version, reject if it's not what it should be (will only work if no voting)
const uint8_t version = m_core.get_ideal_hard_fork_version(hshd.current_height - 1); if (hshd.current_height > 0)
if (version >= 6 && version != hshd.top_version)
{ {
if (version < hshd.top_version) const uint8_t version = m_core.get_ideal_hard_fork_version(hshd.current_height - 1);
MCLOG_RED(el::Level::Warning, "global", context << " peer claims higher version that we think - we may be forked from the network and a software upgrade may be needed"); if (version >= 6 && version != hshd.top_version)
LOG_DEBUG_CC(context, "Ignoring due to wrong top version for block " << (hshd.current_height - 1) << ": " << (unsigned)hshd.top_version << ", expected " << (unsigned)version); {
return false; if (version < hshd.top_version)
MCLOG_RED(el::Level::Warning, "global", context << " peer claims higher version that we think (" <<
(unsigned)hshd.top_version << " for " << (hshd.current_height - 1) << "instead of " << (unsigned)version <<
") - we may be forked from the network and a software upgrade may be needed");
return false;
}
} }
context.m_remote_blockchain_height = hshd.current_height; context.m_remote_blockchain_height = hshd.current_height;