more invariant check in peer connection

This commit is contained in:
Arvid Norberg
2008-03-12 08:36:22 +00:00
parent 0e4d62497b
commit 5173c7fe31

View File

@@ -3141,6 +3141,28 @@ namespace libtorrent
return;
}
if (t->has_picker())
{
std::map<piece_block, int> num_requests;
for (torrent::const_peer_iterator i = t->begin(); i != t->end(); ++i)
{
// make sure this peer is not a dangling pointer
TORRENT_ASSERT(m_ses.has_peer(*i));
peer_connection const& p = *(*i);
for (std::deque<piece_block>::const_iterator i = p.request_queue().begin()
, end(p.request_queue().end()); i != end; ++i)
++num_requests[*i];
for (std::deque<piece_block>::const_iterator i = p.download_queue().begin()
, end(p.download_queue().end()); i != end; ++i)
++num_requests[*i];
}
for (std::map<piece_block, int>::iterator i = num_requests.begin()
, end(num_requests.end()); i != end; ++i)
{
if (!t->picker().is_downloaded(i->first))
TORRENT_ASSERT(t->picker().num_peers(i->first) == i->second);
}
}
if (m_peer_info)
{
policy::const_iterator i;