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
+7
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