fixed bug related to m_have_piece optimization. Renamed num_pieces() to num_have() to avoid confusion
This commit is contained in:
parent
f16b5d0c7a
commit
9f5fa96cad
|
@ -381,7 +381,7 @@ namespace libtorrent
|
|||
return has_picker()?m_picker->have_piece(index):true;
|
||||
}
|
||||
|
||||
int num_pieces() const
|
||||
int num_have() const
|
||||
{
|
||||
return has_picker()
|
||||
?m_picker->num_have()
|
||||
|
|
|
@ -1426,7 +1426,7 @@ namespace libtorrent
|
|||
TORRENT_ASSERT(t->valid_metadata());
|
||||
|
||||
// in this case, have_all or have_none should be sent instead
|
||||
TORRENT_ASSERT(!m_supports_fast || !t->is_seed() || t->num_pieces() != 0);
|
||||
TORRENT_ASSERT(!m_supports_fast || !t->is_seed() || t->num_have() != 0);
|
||||
|
||||
if (m_supports_fast && t->is_seed())
|
||||
{
|
||||
|
@ -1434,13 +1434,13 @@ namespace libtorrent
|
|||
send_allowed_set();
|
||||
return;
|
||||
}
|
||||
else if (m_supports_fast && t->num_pieces() == 0)
|
||||
else if (m_supports_fast && t->num_have() == 0)
|
||||
{
|
||||
write_have_none();
|
||||
send_allowed_set();
|
||||
return;
|
||||
}
|
||||
else if (t->num_pieces() == 0)
|
||||
else if (t->num_have() == 0)
|
||||
{
|
||||
// don't send a bitfield if we don't have any pieces
|
||||
#ifndef NDEBUG
|
||||
|
@ -1449,7 +1449,7 @@ namespace libtorrent
|
|||
return;
|
||||
}
|
||||
|
||||
int num_pieces = t->picker().num_pieces();
|
||||
int num_pieces = t->torrent_file().num_pieces();
|
||||
int lazy_pieces[50];
|
||||
int num_lazy_pieces = 0;
|
||||
int lazy_piece = 0;
|
||||
|
|
|
@ -200,7 +200,7 @@ namespace libtorrent
|
|||
|
||||
int prefer_whole_pieces = c.prefer_whole_pieces();
|
||||
|
||||
bool rarest_first = t.num_pieces() >= t.settings().initial_picker_threshold;
|
||||
bool rarest_first = t.num_have() >= t.settings().initial_picker_threshold;
|
||||
|
||||
if (prefer_whole_pieces == 0)
|
||||
{
|
||||
|
@ -644,7 +644,7 @@ namespace libtorrent
|
|||
error_code ec;
|
||||
TORRENT_ASSERT(c.remote() == c.get_socket()->remote_endpoint(ec) || ec);
|
||||
|
||||
if (m_peers.size() >= m_torrent->settings().max_peerlist_size)
|
||||
if (int(m_peers.size()) >= m_torrent->settings().max_peerlist_size)
|
||||
{
|
||||
c.disconnect("peer list size exceeded, refusing incoming connection");
|
||||
return false;
|
||||
|
@ -773,7 +773,7 @@ namespace libtorrent
|
|||
return 0;
|
||||
}
|
||||
|
||||
if (m_peers.size() >= m_torrent->settings().max_peerlist_size)
|
||||
if (int(m_peers.size()) >= m_torrent->settings().max_peerlist_size)
|
||||
return 0;
|
||||
|
||||
// we don't have any info about this peer.
|
||||
|
|
|
@ -959,7 +959,7 @@ namespace libtorrent
|
|||
const int last_piece = m_torrent_file->num_pieces() - 1;
|
||||
|
||||
size_type total_done
|
||||
= size_type(num_pieces()) * m_torrent_file->piece_length();
|
||||
= size_type(num_have()) * m_torrent_file->piece_length();
|
||||
|
||||
// if we have the last piece, we have to correct
|
||||
// the amount we have, since the first calculation
|
||||
|
@ -990,14 +990,14 @@ namespace libtorrent
|
|||
return make_tuple(m_torrent_file->total_size()
|
||||
, m_torrent_file->total_size());
|
||||
|
||||
TORRENT_ASSERT(num_pieces() >= m_picker->num_have_filtered());
|
||||
size_type wanted_done = size_type(num_pieces() - m_picker->num_have_filtered())
|
||||
TORRENT_ASSERT(num_have() >= m_picker->num_have_filtered());
|
||||
size_type wanted_done = size_type(num_have() - m_picker->num_have_filtered())
|
||||
* piece_size;
|
||||
TORRENT_ASSERT(wanted_done >= 0);
|
||||
|
||||
size_type total_done
|
||||
= size_type(num_pieces()) * piece_size;
|
||||
TORRENT_ASSERT(num_pieces() < m_torrent_file->num_pieces());
|
||||
= size_type(num_have()) * piece_size;
|
||||
TORRENT_ASSERT(num_have() < m_torrent_file->num_pieces());
|
||||
|
||||
// if we have the last piece, we have to correct
|
||||
// the amount we have, since the first calculation
|
||||
|
@ -1122,7 +1122,7 @@ namespace libtorrent
|
|||
{
|
||||
// Thist happens when a piece has been downloaded completely
|
||||
// but not yet verified against the hash
|
||||
std::cerr << "num_pieces: " << num_pieces() << std::endl;
|
||||
std::cerr << "num_have: " << num_have() << std::endl;
|
||||
|
||||
std::cerr << "unfinished:" << std::endl;
|
||||
|
||||
|
@ -1172,7 +1172,7 @@ namespace libtorrent
|
|||
?"disk failed":"failed") << " ]\n";
|
||||
#endif
|
||||
|
||||
bool was_finished = m_picker->num_filtered() + num_pieces()
|
||||
bool was_finished = m_picker->num_filtered() + num_have()
|
||||
== torrent_file().num_pieces();
|
||||
|
||||
if (passed_hash_check == 0)
|
||||
|
@ -1203,7 +1203,7 @@ namespace libtorrent
|
|||
|
||||
if (!was_finished
|
||||
&& (is_seed()
|
||||
|| m_picker->num_filtered() + num_pieces()
|
||||
|| m_picker->num_filtered() + num_have()
|
||||
== torrent_file().num_pieces()))
|
||||
{
|
||||
TORRENT_ASSERT(passed_hash_check == 0);
|
||||
|
@ -1528,7 +1528,7 @@ namespace libtorrent
|
|||
|
||||
bool was_finished = is_finished();
|
||||
bool filter_updated = m_picker->set_piece_priority(index, priority);
|
||||
TORRENT_ASSERT(num_pieces() >= m_picker->num_have_filtered());
|
||||
TORRENT_ASSERT(num_have() >= m_picker->num_have_filtered());
|
||||
if (filter_updated) update_peer_interest(was_finished);
|
||||
}
|
||||
|
||||
|
@ -1566,7 +1566,7 @@ namespace libtorrent
|
|||
TORRENT_ASSERT(*i >= 0);
|
||||
TORRENT_ASSERT(*i <= 7);
|
||||
filter_updated |= m_picker->set_piece_priority(index, *i);
|
||||
TORRENT_ASSERT(num_pieces() >= m_picker->num_have_filtered());
|
||||
TORRENT_ASSERT(num_have() >= m_picker->num_have_filtered());
|
||||
}
|
||||
if (filter_updated) update_peer_interest(was_finished);
|
||||
}
|
||||
|
@ -3268,7 +3268,7 @@ namespace libtorrent
|
|||
if (!m_picker->is_downloaded(i->first))
|
||||
TORRENT_ASSERT(m_picker->num_peers(i->first) == i->second);
|
||||
}
|
||||
TORRENT_ASSERT(num_pieces() >= m_picker->num_have_filtered());
|
||||
TORRENT_ASSERT(num_have() >= m_picker->num_have_filtered());
|
||||
}
|
||||
|
||||
if (valid_metadata())
|
||||
|
@ -4019,7 +4019,7 @@ namespace libtorrent
|
|||
for (int i = 0; i < num_pieces; ++i)
|
||||
if (m_picker->have_piece(i)) st.pieces.set_bit(i);
|
||||
}
|
||||
st.num_pieces = num_pieces();
|
||||
st.num_pieces = num_have();
|
||||
st.num_seeds = num_seeds();
|
||||
if (m_picker.get())
|
||||
st.distributed_copies = m_picker->distributed_copies();
|
||||
|
|
Loading…
Reference in New Issue