fixed a bug in http_seed_connection::downloading_piece_progress which would sometimes trigger an assert
This commit is contained in:
parent
643a49f022
commit
973a1c45f2
|
@ -117,7 +117,11 @@ namespace libtorrent
|
|||
TORRENT_ASSERT(receive_buffer_size < t->block_size());
|
||||
ret.bytes_downloaded = t->block_size() - receive_buffer_size;
|
||||
}
|
||||
ret.block_index = (pr.start + ret.bytes_downloaded) / t->block_size();
|
||||
// this is used to make sure that the block_index stays within
|
||||
// bounds. If the entire piece is downloaded, the block_index
|
||||
// would otherwise point to one past the end
|
||||
int correction = ret.bytes_downloaded ? -1 : 0;
|
||||
ret.block_index = (pr.start + ret.bytes_downloaded + correction) / t->block_size();
|
||||
ret.full_block_bytes = t->block_size();
|
||||
const int last_piece = t->torrent_file().num_pieces() - 1;
|
||||
if (ret.piece_index == last_piece && ret.block_index
|
||||
|
|
|
@ -117,10 +117,11 @@ namespace libtorrent
|
|||
|
||||
ret.piece_index = m_requests.front().piece;
|
||||
ret.bytes_downloaded = m_block_pos % t->block_size();
|
||||
if (m_block_pos)
|
||||
ret.block_index = (m_requests.front().start + m_block_pos - 1) / t->block_size();
|
||||
else
|
||||
ret.block_index = (m_requests.front().start + m_block_pos) / t->block_size();
|
||||
// this is used to make sure that the block_index stays within
|
||||
// bounds. If the entire piece is downloaded, the block_index
|
||||
// would otherwise point to one past the end
|
||||
int correction = m_block_pos ? -1 : 0;
|
||||
ret.block_index = (m_requests.front().start + m_block_pos + correction) / t->block_size();
|
||||
TORRENT_ASSERT(ret.block_index < piece_block::invalid.block_index);
|
||||
TORRENT_ASSERT(ret.piece_index < piece_block::invalid.piece_index);
|
||||
|
||||
|
|
Loading…
Reference in New Issue