fix to recalculate_connect_candidates

This commit is contained in:
Arvid Norberg 2009-05-03 06:57:04 +00:00
parent 7439ca3277
commit c71100950b
2 changed files with 14 additions and 5 deletions

View File

@ -308,11 +308,7 @@ namespace libtorrent
int num_seeds() const { return m_num_seeds; }
int num_connect_candidates() const { return m_num_connect_candidates; }
void recalculate_connect_candidates()
{
if (m_num_connect_candidates == 0)
m_num_connect_candidates = 1;
}
void recalculate_connect_candidates();
void erase_peer(iterator i);

View File

@ -375,6 +375,8 @@ namespace libtorrent
// as well, such as in the piece picker.
void policy::erase_peer(iterator i)
{
INVARIANT_CHECK;
if (m_torrent->has_picker())
m_torrent->picker().clear_peer((void*)&(*i));
if (i->seed) --m_num_seeds;
@ -1069,6 +1071,17 @@ namespace libtorrent
c.send_block_requests();
}
void policy::recalculate_connect_candidates()
{
m_num_connect_candidates = 0;
const bool is_finished = m_torrent->is_finished();
for (const_iterator i = m_peers.begin();
i != m_peers.end(); ++i)
{
m_num_connect_candidates += is_connect_candidate(*i, is_finished);
}
}
#ifdef TORRENT_DEBUG
bool policy::has_connection(const peer_connection* c)
{