diff options
author | Riccardo Spagni <ric@spagni.net> | 2019-07-17 21:19:24 +0200 |
---|---|---|
committer | Riccardo Spagni <ric@spagni.net> | 2019-07-17 21:19:24 +0200 |
commit | 3aa87ad17866b1966569ea66debbfe909f3aae43 (patch) | |
tree | 6709f6b86ad0d68c5cec7d507baac5fcfe24641e | |
parent | Merge pull request #5747 (diff) | |
parent | cryptonote_protocol: drop peers we can't download from when syncing (diff) | |
download | monero-3aa87ad17866b1966569ea66debbfe909f3aae43.tar.xz |
Merge pull request #5733
1542d5d9 cryptonote_protocol: drop peers we can't download from when syncing (moneromooo-monero)
ff42af87 p2p: add a few missing connection close calls (moneromooo-monero)
Diffstat (limited to '')
-rw-r--r-- | src/cryptonote_protocol/cryptonote_protocol_handler.inl | 5 | ||||
-rw-r--r-- | src/p2p/net_node.inl | 8 |
2 files changed, 11 insertions, 2 deletions
diff --git a/src/cryptonote_protocol/cryptonote_protocol_handler.inl b/src/cryptonote_protocol/cryptonote_protocol_handler.inl index b38407840..03d04a074 100644 --- a/src/cryptonote_protocol/cryptonote_protocol_handler.inl +++ b/src/cryptonote_protocol/cryptonote_protocol_handler.inl @@ -341,6 +341,11 @@ namespace cryptonote if(m_core.have_block(hshd.top_id)) { + if (target > hshd.current_height) + { + MINFO(context << "peer is not ahead of us and we're syncing, disconnecting"); + return false; + } context.m_state = cryptonote_connection_context::state_normal; if(is_inital && target == m_core.get_current_blockchain_height()) on_connection_synchronized(); diff --git a/src/p2p/net_node.inl b/src/p2p/net_node.inl index a5800df5e..cec832231 100644 --- a/src/p2p/net_node.inl +++ b/src/p2p/net_node.inl @@ -944,7 +944,10 @@ namespace nodetool } if(!context.m_is_income) m_network_zones.at(context.m_remote_address.get_zone()).m_peerlist.set_peer_just_seen(context.peer_id, context.m_remote_address, context.m_pruning_seed, context.m_rpc_port); - m_payload_handler.process_payload_sync_data(rsp.payload_data, context, false); + if (!m_payload_handler.process_payload_sync_data(rsp.payload_data, context, false)) + { + m_network_zones.at(context.m_remote_address.get_zone()).m_net_server.get_config_object().close(context.m_connection_id ); + } }); if(!r) @@ -1090,6 +1093,7 @@ namespace nodetool LOG_PRINT_CC_PRIORITY_NODE(is_priority, *con, "Failed to HANDSHAKE with peer " << na.str() /*<< ", try " << try_count*/); + zone.m_net_server.get_config_object().close(con->m_connection_id); return false; } @@ -1149,7 +1153,7 @@ namespace nodetool bool is_priority = is_priority_node(na); LOG_PRINT_CC_PRIORITY_NODE(is_priority, *con, "Failed to HANDSHAKE with peer " << na.str()); - + zone.m_net_server.get_config_object().close(con->m_connection_id); return false; } |