forked from premiere/premiere-libtorrent
another attempt to fix tracker timer bug. Fixes issue where the tracker timer would be triggered repeatedly. Fixes bug where trackers loaded from resume data would get a fail limit of 3 (now they don't have a limit)
This commit is contained in:
parent
5d8feafc11
commit
feaf4aa082
|
@ -809,7 +809,7 @@ namespace libtorrent
|
||||||
|
|
||||||
void parse_response(const entry& e, std::vector<peer_entry>& peer_list);
|
void parse_response(const entry& e, std::vector<peer_entry>& peer_list);
|
||||||
|
|
||||||
void update_tracker_timer();
|
void update_tracker_timer(ptime now);
|
||||||
|
|
||||||
static void on_tracker_announce_disp(boost::weak_ptr<torrent> p
|
static void on_tracker_announce_disp(boost::weak_ptr<torrent> p
|
||||||
, error_code const& e);
|
, error_code const& e);
|
||||||
|
|
|
@ -1404,7 +1404,7 @@ namespace libtorrent
|
||||||
req.listen_port = m_ses.listen_port();
|
req.listen_port = m_ses.listen_port();
|
||||||
req.key = m_ses.m_key;
|
req.key = m_ses.m_key;
|
||||||
|
|
||||||
ptime now = time_now();
|
ptime now = time_now_hires();
|
||||||
|
|
||||||
// the tier is kept as INT_MAX until we find the first
|
// the tier is kept as INT_MAX until we find the first
|
||||||
// tracker that works, then it's set to that tracker's
|
// tracker that works, then it's set to that tracker's
|
||||||
|
@ -1460,7 +1460,7 @@ namespace libtorrent
|
||||||
if ((protocol == "http" || protocol == "https")
|
if ((protocol == "http" || protocol == "https")
|
||||||
&& proxy_type == proxy_settings::none)
|
&& proxy_type == proxy_settings::none)
|
||||||
{
|
{
|
||||||
|
ae.next_announce = now + minutes(10);
|
||||||
if (m_ses.m_alerts.should_post<anonymous_mode_alert>())
|
if (m_ses.m_alerts.should_post<anonymous_mode_alert>())
|
||||||
{
|
{
|
||||||
m_ses.m_alerts.post_alert(
|
m_ses.m_alerts.post_alert(
|
||||||
|
@ -1475,6 +1475,7 @@ namespace libtorrent
|
||||||
&& proxy_type != proxy_settings::socks5_pw
|
&& proxy_type != proxy_settings::socks5_pw
|
||||||
&& proxy_type != proxy_settings::i2p_proxy))
|
&& proxy_type != proxy_settings::i2p_proxy))
|
||||||
{
|
{
|
||||||
|
ae.next_announce = now + minutes(10);
|
||||||
if (m_ses.m_alerts.should_post<anonymous_mode_alert>())
|
if (m_ses.m_alerts.should_post<anonymous_mode_alert>())
|
||||||
{
|
{
|
||||||
m_ses.m_alerts.post_alert(
|
m_ses.m_alerts.post_alert(
|
||||||
|
@ -1513,7 +1514,7 @@ namespace libtorrent
|
||||||
&& !settings().announce_to_all_tiers)
|
&& !settings().announce_to_all_tiers)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
update_tracker_timer();
|
update_tracker_timer(now);
|
||||||
}
|
}
|
||||||
|
|
||||||
void torrent::scrape_tracker()
|
void torrent::scrape_tracker()
|
||||||
|
@ -1601,7 +1602,7 @@ namespace libtorrent
|
||||||
int tracker_index = ae - &m_trackers[0];
|
int tracker_index = ae - &m_trackers[0];
|
||||||
m_last_working_tracker = prioritize_tracker(tracker_index);
|
m_last_working_tracker = prioritize_tracker(tracker_index);
|
||||||
}
|
}
|
||||||
update_tracker_timer();
|
update_tracker_timer(now);
|
||||||
|
|
||||||
if (complete >= 0) m_complete = complete;
|
if (complete >= 0) m_complete = complete;
|
||||||
if (incomplete >= 0) m_incomplete = incomplete;
|
if (incomplete >= 0) m_incomplete = incomplete;
|
||||||
|
@ -1732,7 +1733,7 @@ namespace libtorrent
|
||||||
for (std::vector<announce_entry>::iterator i = m_trackers.begin()
|
for (std::vector<announce_entry>::iterator i = m_trackers.begin()
|
||||||
, end(m_trackers.end()); i != end; ++i)
|
, end(m_trackers.end()); i != end; ++i)
|
||||||
i->next_announce = (std::max)(now, i->min_announce);
|
i->next_announce = (std::max)(now, i->min_announce);
|
||||||
update_tracker_timer();
|
update_tracker_timer(now);
|
||||||
}
|
}
|
||||||
|
|
||||||
void torrent::force_tracker_request(ptime t)
|
void torrent::force_tracker_request(ptime t)
|
||||||
|
@ -1741,7 +1742,7 @@ namespace libtorrent
|
||||||
for (std::vector<announce_entry>::iterator i = m_trackers.begin()
|
for (std::vector<announce_entry>::iterator i = m_trackers.begin()
|
||||||
, end(m_trackers.end()); i != end; ++i)
|
, end(m_trackers.end()); i != end; ++i)
|
||||||
i->next_announce = (std::max)(t, i->min_announce);
|
i->next_announce = (std::max)(t, i->min_announce);
|
||||||
update_tracker_timer();
|
update_tracker_timer(time_now());
|
||||||
}
|
}
|
||||||
|
|
||||||
void torrent::set_tracker_login(
|
void torrent::set_tracker_login(
|
||||||
|
@ -3740,6 +3741,7 @@ namespace libtorrent
|
||||||
, boost::bind(&announce_entry::url, _1) == e.url) != m_trackers.end())
|
, boost::bind(&announce_entry::url, _1) == e.url) != m_trackers.end())
|
||||||
continue;
|
continue;
|
||||||
e.tier = tier;
|
e.tier = tier;
|
||||||
|
e.fail_limit = 0;
|
||||||
m_trackers.push_back(e);
|
m_trackers.push_back(e);
|
||||||
}
|
}
|
||||||
++tier;
|
++tier;
|
||||||
|
@ -5456,7 +5458,7 @@ namespace libtorrent
|
||||||
start_announcing();
|
start_announcing();
|
||||||
}
|
}
|
||||||
|
|
||||||
void torrent::update_tracker_timer()
|
void torrent::update_tracker_timer(ptime now)
|
||||||
{
|
{
|
||||||
if (!m_announcing) return;
|
if (!m_announcing) return;
|
||||||
|
|
||||||
|
@ -5487,7 +5489,9 @@ namespace libtorrent
|
||||||
if (!settings().announce_to_all_trackers
|
if (!settings().announce_to_all_trackers
|
||||||
&& !settings().announce_to_all_tiers) break;
|
&& !settings().announce_to_all_tiers) break;
|
||||||
}
|
}
|
||||||
if (next_announce == max_time()) return;
|
|
||||||
|
if (next_announce == max_time()
|
||||||
|
|| next_announce <= now) return;
|
||||||
|
|
||||||
// since we don't know if we have to re-issue the async_wait or not
|
// since we don't know if we have to re-issue the async_wait or not
|
||||||
// always do it
|
// always do it
|
||||||
|
@ -6489,7 +6493,7 @@ namespace libtorrent
|
||||||
m_ses.m_alerts.post_alert(scrape_failed_alert(get_handle(), r.url, ec));
|
m_ses.m_alerts.post_alert(scrape_failed_alert(get_handle(), r.url, ec));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
update_tracker_timer();
|
update_tracker_timer(time_now());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue