From bb5c61218076e47f9192ed7e5c9a1a2e4b058020 Mon Sep 17 00:00:00 2001 From: arvidn Date: Mon, 25 Mar 2019 18:26:06 +0100 Subject: [PATCH] fix typo in validation of reject messages. Make on_choke a bit more defensive --- src/bt_peer_connection.cpp | 8 ++++---- src/peer_connection.cpp | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/bt_peer_connection.cpp b/src/bt_peer_connection.cpp index 754e81ee2..588c525aa 100644 --- a/src/bt_peer_connection.cpp +++ b/src/bt_peer_connection.cpp @@ -810,12 +810,12 @@ namespace { // pretend that we received reject request messages std::shared_ptr t = associated_torrent().lock(); TORRENT_ASSERT(t); - while (!download_queue().empty()) + auto const dlq = download_queue(); + for (pending_block const& pb : dlq) { - piece_block const& b = download_queue().front().block; peer_request r; - r.piece = b.piece_index; - r.start = b.block_index * t->block_size(); + r.piece = pb.block.piece_index; + r.start = pb.block.block_index * t->block_size(); r.length = t->block_size(); // if it's the last piece, make sure to // set the length of the request to not diff --git a/src/peer_connection.cpp b/src/peer_connection.cpp index f51ff7d0a..8544b1721 100644 --- a/src/peer_connection.cpp +++ b/src/peer_connection.cpp @@ -1521,7 +1521,7 @@ namespace libtorrent { if (r.piece < piece_index_t{} || r.piece >= t->torrent_file().files().end_piece() || r.start < 0 - || r.start >= block_size + || r.start >= t->torrent_file().piece_length() || (r.start % block_size) != 0 || r.length != std::min(t->torrent_file().piece_size(r.piece) - r.start, block_size)) {