don't create web seed connections if the torrent is upload only
The fix in 9a63d4696e
was imcomplete.
It turns out disconnect_if_redundant decrements the connection count
which unballances the count if we do end up disconnecting the peer.
This change avoids the problem by checking if the torrent is
upload only much sooner, before the connection object is even created.
We still do a redundancy check just-in-case, but it is not expected to
trigger.
This commit is contained in:
parent
5f4816f1d8
commit
50c2aee8ec
|
@ -6605,6 +6605,7 @@ namespace {
|
||||||
|
|
||||||
if (is_paused()) return;
|
if (is_paused()) return;
|
||||||
if (m_ses.is_aborted()) return;
|
if (m_ses.is_aborted()) return;
|
||||||
|
if (is_upload_only()) return;
|
||||||
|
|
||||||
boost::shared_ptr<socket_type> s
|
boost::shared_ptr<socket_type> s
|
||||||
= boost::make_shared<socket_type>(boost::ref(m_ses.get_io_service()));
|
= boost::make_shared<socket_type>(boost::ref(m_ses.get_io_service()));
|
||||||
|
|
|
@ -77,6 +77,8 @@ namespace libtorrent
|
||||||
|
|
||||||
TORRENT_ASSERT(is_outgoing());
|
TORRENT_ASSERT(is_outgoing());
|
||||||
|
|
||||||
|
TORRENT_ASSERT(!m_torrent.lock()->is_upload_only());
|
||||||
|
|
||||||
// we only want left-over bandwidth
|
// we only want left-over bandwidth
|
||||||
// TODO: introduce a web-seed default class which has a low download priority
|
// TODO: introduce a web-seed default class which has a low download priority
|
||||||
|
|
||||||
|
@ -117,9 +119,10 @@ namespace libtorrent
|
||||||
// which fails because the m_num_connecting count is not consistent until
|
// which fails because the m_num_connecting count is not consistent until
|
||||||
// after we call peer_connection::start
|
// after we call peer_connection::start
|
||||||
m_upload_only = true;
|
m_upload_only = true;
|
||||||
disconnect_if_redundant();
|
|
||||||
if (is_disconnecting()) return;
|
|
||||||
peer_connection::start();
|
peer_connection::start();
|
||||||
|
// disconnect_if_redundant must be called after start to keep
|
||||||
|
// m_num_connecting consistent
|
||||||
|
disconnect_if_redundant();
|
||||||
}
|
}
|
||||||
|
|
||||||
web_connection_base::~web_connection_base()
|
web_connection_base::~web_connection_base()
|
||||||
|
|
Loading…
Reference in New Issue