protocol: drop origin IP if a block fails to verify in sync mode

It would otherwise be possible for a peer to send bad blocks,
then disconnect and reconnect again, escaping bans
This commit is contained in:
moneromooo-monero 2020-12-08 17:55:24 +00:00
parent 316dcaa399
commit d660f22ed1
No known key found for this signature in database
GPG key ID: 686F07454D6CEFC3
6 changed files with 64 additions and 33 deletions

View file

@ -2914,11 +2914,7 @@ namespace cryptonote
block_queue.foreach([&](const cryptonote::block_queue::span &span) {
const std::string span_connection_id = epee::string_tools::pod_to_hex(span.connection_id);
uint32_t speed = (uint32_t)(100.0f * block_queue.get_speed(span.connection_id) + 0.5f);
std::string address = "";
for (const auto &c: m_p2p.get_payload_object().get_connections())
if (c.connection_id == span_connection_id)
address = c.address;
res.spans.push_back({span.start_block_height, span.nblocks, span_connection_id, (uint32_t)(span.rate + 0.5f), speed, span.size, address});
res.spans.push_back({span.start_block_height, span.nblocks, span_connection_id, (uint32_t)(span.rate + 0.5f), speed, span.size, span.origin.str()});
return true;
});
res.overview = block_queue.get_overview(res.height);