Fix checkpoint exchange to support rolling upgrades, fixed silent lag startup period, Mixed v4.12/v4.13 peers coexist

This commit is contained in:
Matt Hess
2025-12-17 17:48:20 +00:00
parent a2bf43c0e6
commit 0c31e9ae5f
2 changed files with 7 additions and 4 deletions

View File

@@ -3188,6 +3188,13 @@ bool P2PServer::P2PClient::on_checkpoint_request()
LOGINFO(4, "peer " << log::Gray() << static_cast<char*>(m_addrString) << log::NoColor()
<< " requested checkpoints, sending " << checkpoints.size() << " checkpoints");
// If we have no checkpoints, don't send a response (backward compatibility)
// Older peers expect count >= 1, so sending count=0 would cause them to disconnect
if (checkpoints.empty()) {
LOGINFO(4, "No checkpoints to send to peer " << static_cast<char*>(m_addrString) << ", skipping response");
return true;
}
// Send checkpoint response
const bool result = server->send(this,
[&checkpoints, this](uint8_t* buf, size_t buf_size) -> size_t

View File

@@ -1464,10 +1464,6 @@ void p2pool::download_block_headers4(uint64_t start_height, uint64_t current_hei
// Pre-fetch recent mainchain blocks to populate cache before sidechain sync
prefetch_mainchain_blocks(current_height);
// Retry verification of any unverified sidechain blocks now that mainchain data is available
// This catches up the sidechain immediately instead of waiting for the next ZMQ notification
m_sideChain->retry_unverified_blocks();
api_update_network_stats();
get_miner_data();