merged RC_1_1 into master
This commit is contained in:
commit
15a8a17a6f
|
@ -82,6 +82,8 @@
|
||||||
* resume data no longer has timestamps of files
|
* resume data no longer has timestamps of files
|
||||||
* require C++11 to build libtorrent
|
* require C++11 to build libtorrent
|
||||||
|
|
||||||
|
* fix issue resuming 1.0.x downloads with a file priority 0
|
||||||
|
* fix torrent_status::next_announce
|
||||||
* fix pad-file scalability issue
|
* fix pad-file scalability issue
|
||||||
* made coalesce_reads/coalesce_writes settings take effect on linux and windows
|
* made coalesce_reads/coalesce_writes settings take effect on linux and windows
|
||||||
* restore support for incoming connections over SOCKS5 (disabled by default)
|
* restore support for incoming connections over SOCKS5 (disabled by default)
|
||||||
|
|
|
@ -84,6 +84,8 @@ using lt::address_v4;
|
||||||
using lt::address_v6;
|
using lt::address_v6;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
using std::chrono::duration_cast;
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
|
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
|
@ -1676,6 +1678,13 @@ COLUMN OPTIONS
|
||||||
|
|
||||||
if (print_trackers)
|
if (print_trackers)
|
||||||
{
|
{
|
||||||
|
snprintf(str, sizeof(str), "next_announce: %4" PRId64 " | current tracker: %s\x1b[K\n"
|
||||||
|
, std::int64_t(duration_cast<seconds>(s.next_announce).count())
|
||||||
|
, s.current_tracker.c_str());
|
||||||
|
out += str;
|
||||||
|
pos += 1;
|
||||||
|
std::vector<lt::announce_entry> tr = h.trackers();
|
||||||
|
lt::time_point now = lt::clock_type::now();
|
||||||
for (lt::announce_entry const& ae : h.trackers())
|
for (lt::announce_entry const& ae : h.trackers())
|
||||||
{
|
{
|
||||||
auto best_ae = std::min_element(ae.endpoints.begin(), ae.endpoints.end()
|
auto best_ae = std::min_element(ae.endpoints.begin(), ae.endpoints.end()
|
||||||
|
|
|
@ -444,6 +444,14 @@ namespace libtorrent {
|
||||||
aux::vector<download_priority_t, file_index_t> m_file_priority;
|
aux::vector<download_priority_t, file_index_t> m_file_priority;
|
||||||
std::string m_save_path;
|
std::string m_save_path;
|
||||||
std::string m_part_file_name;
|
std::string m_part_file_name;
|
||||||
|
|
||||||
|
// if this is false, we're not using a part file to store priority-0
|
||||||
|
// pieces, but we instead look for them under their actual file names
|
||||||
|
// this defaults to true, but when checking resume data for a torrent
|
||||||
|
// where we would expect to have a part file, but there isn't one, we set
|
||||||
|
// this to false.
|
||||||
|
bool m_use_part_file = true;
|
||||||
|
|
||||||
// the file pool is a member of the disk_io_thread
|
// the file pool is a member of the disk_io_thread
|
||||||
// to make all storage instances share the pool
|
// to make all storage instances share the pool
|
||||||
file_pool& m_pool;
|
file_pool& m_pool;
|
||||||
|
|
|
@ -747,10 +747,6 @@ namespace libtorrent {
|
||||||
// immediately
|
// immediately
|
||||||
void do_connect_boost();
|
void do_connect_boost();
|
||||||
|
|
||||||
// returns the absolute time when the next tracker
|
|
||||||
// announce will take place.
|
|
||||||
time_point next_announce() const;
|
|
||||||
|
|
||||||
// forcefully sets next_announce to the current time
|
// forcefully sets next_announce to the current time
|
||||||
void force_tracker_request(time_point, int tracker_idx);
|
void force_tracker_request(time_point, int tracker_idx);
|
||||||
void scrape_tracker(int idx, bool user_triggered);
|
void scrape_tracker(int idx, bool user_triggered);
|
||||||
|
|
|
@ -469,7 +469,8 @@ namespace libtorrent {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (file_index < m_file_priority.end_index()
|
if (file_index < m_file_priority.end_index()
|
||||||
&& m_file_priority[file_index] == dont_download)
|
&& m_file_priority[file_index] == dont_download
|
||||||
|
&& m_use_part_file)
|
||||||
{
|
{
|
||||||
TORRENT_ASSERT(m_part_file);
|
TORRENT_ASSERT(m_part_file);
|
||||||
|
|
||||||
|
@ -532,7 +533,8 @@ namespace libtorrent {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (file_index < m_file_priority.end_index()
|
if (file_index < m_file_priority.end_index()
|
||||||
&& m_file_priority[file_index] == dont_download)
|
&& m_file_priority[file_index] == dont_download
|
||||||
|
&& m_use_part_file)
|
||||||
{
|
{
|
||||||
TORRENT_ASSERT(m_part_file);
|
TORRENT_ASSERT(m_part_file);
|
||||||
|
|
||||||
|
|
|
@ -3324,11 +3324,6 @@ namespace libtorrent {
|
||||||
if (want_peers()) m_ses.prioritize_connections(shared_from_this());
|
if (want_peers()) m_ses.prioritize_connections(shared_from_this());
|
||||||
}
|
}
|
||||||
|
|
||||||
time_point torrent::next_announce() const
|
|
||||||
{
|
|
||||||
return m_waiting_tracker ? m_tracker_timer.expires_at() : min_time();
|
|
||||||
}
|
|
||||||
|
|
||||||
// this is the entry point for the client to force a re-announce. It's
|
// this is the entry point for the client to force a re-announce. It's
|
||||||
// considered a client-initiated announce (as opposed to the regular ones,
|
// considered a client-initiated announce (as opposed to the regular ones,
|
||||||
// issued by libtorrent)
|
// issued by libtorrent)
|
||||||
|
@ -10718,10 +10713,10 @@ namespace {
|
||||||
st->download_payload_rate = m_stat.download_payload_rate();
|
st->download_payload_rate = m_stat.download_payload_rate();
|
||||||
st->upload_payload_rate = m_stat.upload_payload_rate();
|
st->upload_payload_rate = m_stat.upload_payload_rate();
|
||||||
|
|
||||||
if (m_waiting_tracker && !is_paused())
|
if (is_paused() || m_tracker_timer.expires_at() < now)
|
||||||
st->next_announce = next_announce() - now;
|
|
||||||
else
|
|
||||||
st->next_announce = seconds(0);
|
st->next_announce = seconds(0);
|
||||||
|
else
|
||||||
|
st->next_announce = m_tracker_timer.expires_at() - now;
|
||||||
|
|
||||||
if (st->next_announce.count() < 0)
|
if (st->next_announce.count() < 0)
|
||||||
st->next_announce = seconds(0);
|
st->next_announce = seconds(0);
|
||||||
|
|
Loading…
Reference in New Issue