From 5c4cb96cfbbc9d9a1602bc25cb8828882efc7b4b Mon Sep 17 00:00:00 2001 From: moneromooo-monero Date: Wed, 9 Nov 2016 10:52:29 +0000 Subject: [PATCH] cryptonote_protocol: drop connection when find_blockchain_supplement fails This will be when we can't find common ground between the peer's short chain history and our blockchain. This fixes bad peers claiming a higher blockchain height from never dropped, and keeping the node in synchronizing state forever, since we will never get blocks from that peer. --- src/cryptonote_protocol/cryptonote_protocol_handler.inl | 1 + 1 file changed, 1 insertion(+) diff --git a/src/cryptonote_protocol/cryptonote_protocol_handler.inl b/src/cryptonote_protocol/cryptonote_protocol_handler.inl index 5232d550a..10756a8ad 100644 --- a/src/cryptonote_protocol/cryptonote_protocol_handler.inl +++ b/src/cryptonote_protocol/cryptonote_protocol_handler.inl @@ -622,6 +622,7 @@ namespace cryptonote if(!m_core.find_blockchain_supplement(arg.block_ids, r)) { LOG_ERROR_CCONTEXT("Failed to handle NOTIFY_REQUEST_CHAIN."); + m_p2p->drop_connection(context); return 1; } LOG_PRINT_CCONTEXT_L2("-->>NOTIFY_RESPONSE_CHAIN_ENTRY: m_start_height=" << r.start_height << ", m_total_height=" << r.total_height << ", m_block_ids.size()=" << r.m_block_ids.size());