fixed bugs in unchoke change check-in
This commit is contained in:
parent
f8979ff932
commit
a3d32dad4c
|
@ -441,8 +441,6 @@ namespace libtorrent
|
||||||
|
|
||||||
void peer_connection::add_stat(size_type downloaded, size_type uploaded)
|
void peer_connection::add_stat(size_type downloaded, size_type uploaded)
|
||||||
{
|
{
|
||||||
INVARIANT_CHECK;
|
|
||||||
|
|
||||||
m_statistics.add_stat(downloaded, uploaded);
|
m_statistics.add_stat(downloaded, uploaded);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -534,16 +532,28 @@ namespace libtorrent
|
||||||
assert(!m_disconnecting);
|
assert(!m_disconnecting);
|
||||||
assert(m_torrent.expired());
|
assert(m_torrent.expired());
|
||||||
boost::weak_ptr<torrent> wpt = m_ses.find_torrent(ih);
|
boost::weak_ptr<torrent> wpt = m_ses.find_torrent(ih);
|
||||||
boost::shared_ptr<torrent> t = m_torrent.lock();
|
boost::shared_ptr<torrent> t = wpt.lock();
|
||||||
|
|
||||||
if (t && t->is_aborted())
|
if (t && t->is_aborted())
|
||||||
|
{
|
||||||
|
#ifdef TORRENT_VERBOSE_LOGGING
|
||||||
|
(*m_logger) << " *** the torrent has been aborted\n";
|
||||||
|
#endif
|
||||||
t.reset();
|
t.reset();
|
||||||
|
}
|
||||||
|
|
||||||
if (!t)
|
if (!t)
|
||||||
{
|
{
|
||||||
// we couldn't find the torrent!
|
// we couldn't find the torrent!
|
||||||
#ifdef TORRENT_VERBOSE_LOGGING
|
#ifdef TORRENT_VERBOSE_LOGGING
|
||||||
(*m_logger) << " couldn't find a torrent with the given info_hash: " << ih << "\n";
|
(*m_logger) << " *** couldn't find a torrent with the given info_hash: " << ih << "\n";
|
||||||
|
(*m_logger) << " torrents:\n";
|
||||||
|
session_impl::torrent_map const& torrents = m_ses.m_torrents;
|
||||||
|
for (session_impl::torrent_map::const_iterator i = torrents.begin()
|
||||||
|
, end(torrents.end()); i != end; ++i)
|
||||||
|
{
|
||||||
|
(*m_logger) << " " << i->second->torrent_file().info_hash() << "\n";
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
throw std::runtime_error("got info-hash that is not in our session");
|
throw std::runtime_error("got info-hash that is not in our session");
|
||||||
}
|
}
|
||||||
|
@ -1649,7 +1659,7 @@ namespace libtorrent
|
||||||
|
|
||||||
int block_offset = block.block_index * t->block_size();
|
int block_offset = block.block_index * t->block_size();
|
||||||
int block_size
|
int block_size
|
||||||
= std::min((int)t->torrent_file().piece_size(block.piece_index)-block_offset,
|
= (std::min)((int)t->torrent_file().piece_size(block.piece_index)-block_offset,
|
||||||
t->block_size());
|
t->block_size());
|
||||||
assert(block_size > 0);
|
assert(block_size > 0);
|
||||||
assert(block_size <= t->block_size());
|
assert(block_size <= t->block_size());
|
||||||
|
@ -1750,7 +1760,7 @@ namespace libtorrent
|
||||||
piece_block block = m_request_queue.front();
|
piece_block block = m_request_queue.front();
|
||||||
|
|
||||||
int block_offset = block.block_index * t->block_size();
|
int block_offset = block.block_index * t->block_size();
|
||||||
int block_size = std::min((int)t->torrent_file().piece_size(
|
int block_size = (std::min)((int)t->torrent_file().piece_size(
|
||||||
block.piece_index) - block_offset, t->block_size());
|
block.piece_index) - block_offset, t->block_size());
|
||||||
assert(block_size > 0);
|
assert(block_size > 0);
|
||||||
assert(block_size <= t->block_size());
|
assert(block_size <= t->block_size());
|
||||||
|
@ -1790,7 +1800,7 @@ namespace libtorrent
|
||||||
#endif
|
#endif
|
||||||
*/
|
*/
|
||||||
block_offset = block.block_index * t->block_size();
|
block_offset = block.block_index * t->block_size();
|
||||||
block_size = std::min((int)t->torrent_file().piece_size(
|
block_size = (std::min)((int)t->torrent_file().piece_size(
|
||||||
block.piece_index) - block_offset, t->block_size());
|
block.piece_index) - block_offset, t->block_size());
|
||||||
assert(block_size > 0);
|
assert(block_size > 0);
|
||||||
assert(block_size <= t->block_size());
|
assert(block_size <= t->block_size());
|
||||||
|
@ -1989,7 +1999,7 @@ namespace libtorrent
|
||||||
p.pieces = get_bitfield();
|
p.pieces = get_bitfield();
|
||||||
ptime now = time_now();
|
ptime now = time_now();
|
||||||
p.last_request = now - m_last_request;
|
p.last_request = now - m_last_request;
|
||||||
p.last_active = now - std::max(m_last_sent, m_last_receive);
|
p.last_active = now - (std::max)(m_last_sent, m_last_receive);
|
||||||
|
|
||||||
// this will set the flags so that we can update them later
|
// this will set the flags so that we can update them later
|
||||||
p.flags = 0;
|
p.flags = 0;
|
||||||
|
@ -2156,14 +2166,14 @@ namespace libtorrent
|
||||||
if (t->ratio() != 1.f)
|
if (t->ratio() != 1.f)
|
||||||
soon_downloaded = (size_type)(soon_downloaded*(double)t->ratio());
|
soon_downloaded = (size_type)(soon_downloaded*(double)t->ratio());
|
||||||
|
|
||||||
double upload_speed_limit = std::min((soon_downloaded - have_uploaded
|
double upload_speed_limit = (std::min)((soon_downloaded - have_uploaded
|
||||||
+ bias) / break_even_time, double(m_upload_limit));
|
+ bias) / break_even_time, double(m_upload_limit));
|
||||||
|
|
||||||
upload_speed_limit = std::min(upload_speed_limit,
|
upload_speed_limit = (std::min)(upload_speed_limit,
|
||||||
(double)std::numeric_limits<int>::max());
|
(double)std::numeric_limits<int>::max());
|
||||||
|
|
||||||
m_bandwidth_limit[upload_channel].throttle(
|
m_bandwidth_limit[upload_channel].throttle(
|
||||||
std::min(std::max((int)upload_speed_limit, 20)
|
(std::min)((std::max)((int)upload_speed_limit, 20)
|
||||||
, m_upload_limit));
|
, m_upload_limit));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue