diff --git a/src/p2p_server.cpp b/src/p2p_server.cpp index f4aab6d..a4cfecb 100644 --- a/src/p2p_server.cpp +++ b/src/p2p_server.cpp @@ -1268,6 +1268,7 @@ void P2PServer::show_peers() const case PROTOCOL_VERSION_1_2: s << " p1.2"; break; case PROTOCOL_VERSION_1_3: s << " p1.3"; break; case PROTOCOL_VERSION_1_4: s << " p1.4"; break; + case PROTOCOL_VERSION_1_5: s << " p1.5"; break; default: s << " p?"; break; } } @@ -2660,12 +2661,6 @@ void P2PServer::P2PClient::on_after_handshake(uint8_t* &p) p += sizeof(uint32_t); } - // Request checkpoints from peer (CAP exchange) - // Only send to peers with protocol 1.5+ to avoid disconnects with older nodes - if (m_protocolVersion >= PROTOCOL_VERSION_1_5) { - LOGINFO(5, "sending CHECKPOINT_REQUEST to " << static_cast(m_addrString)); - *(p++) = static_cast(MessageId::CHECKPOINT_REQUEST); - } } bool P2PServer::P2PClient::on_listen_port(const uint8_t* buf) @@ -3030,6 +3025,23 @@ void P2PServer::P2PClient::on_peer_list_response(const uint8_t* buf) server->send_aux_job_donation(this, server->m_auxJobLastMessage.data(), static_cast(server->m_auxJobLastMessage.size())); } } + + // Request checkpoints from peer (CAP exchange) + if (m_protocolVersion >= PROTOCOL_VERSION_1_5) { + LOGINFO(5, "sending CHECKPOINT_REQUEST to " << static_cast(m_addrString)); + const bool result = server->send(this, + [](uint8_t* buf, size_t buf_size) -> size_t + { + if (buf_size < 1) { + return 0; + } + buf[0] = static_cast(MessageId::CHECKPOINT_REQUEST); + return 1; + }); + if (!result) { + LOGWARN(3, "Failed to send CHECKPOINT_REQUEST to " << static_cast(m_addrString)); + } + } } continue; }