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