lt sync 3090
This commit is contained in:
parent
f5a6736617
commit
45e3f12a49
|
@ -93,7 +93,13 @@ namespace libtorrent
|
||||||
~torrent_info();
|
~torrent_info();
|
||||||
|
|
||||||
file_storage const& files() const { return m_files; }
|
file_storage const& files() const { return m_files; }
|
||||||
file_storage& files() { return m_files; }
|
file_storage const& orig_files() const { return m_orig_files ? *m_orig_files : m_files; }
|
||||||
|
|
||||||
|
void rename_file(int index, std::string const& new_filename)
|
||||||
|
{
|
||||||
|
copy_on_write();
|
||||||
|
m_files.rename_file(index, new_filename);
|
||||||
|
}
|
||||||
|
|
||||||
void add_tracker(std::string const& url, int tier = 0);
|
void add_tracker(std::string const& url, int tier = 0);
|
||||||
std::vector<announce_entry> const& trackers() const { return m_urls; }
|
std::vector<announce_entry> const& trackers() const { return m_urls; }
|
||||||
|
@ -131,6 +137,7 @@ namespace libtorrent
|
||||||
// these functions will be removed in a future version
|
// these functions will be removed in a future version
|
||||||
torrent_info(entry const& torrent_file) TORRENT_DEPRECATED;
|
torrent_info(entry const& torrent_file) TORRENT_DEPRECATED;
|
||||||
void print(std::ostream& os) const TORRENT_DEPRECATED;
|
void print(std::ostream& os) const TORRENT_DEPRECATED;
|
||||||
|
file_storage& files() TORRENT_DEPRECATED { return m_files; }
|
||||||
// ------- end deprecation -------
|
// ------- end deprecation -------
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -188,10 +195,16 @@ namespace libtorrent
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
void copy_on_write();
|
||||||
bool parse_torrent_file(lazy_entry const& libtorrent, std::string& error);
|
bool parse_torrent_file(lazy_entry const& libtorrent, std::string& error);
|
||||||
|
|
||||||
file_storage m_files;
|
file_storage m_files;
|
||||||
|
|
||||||
|
// if m_files is modified, it is first copied into
|
||||||
|
// m_orig_files so that the original name and
|
||||||
|
// filenames are preserved.
|
||||||
|
boost::shared_ptr<const file_storage> m_orig_files;
|
||||||
|
|
||||||
// the urls to the trackers
|
// the urls to the trackers
|
||||||
std::vector<announce_entry> m_urls;
|
std::vector<announce_entry> m_urls;
|
||||||
std::vector<std::string> m_url_seeds;
|
std::vector<std::string> m_url_seeds;
|
||||||
|
|
|
@ -1046,7 +1046,7 @@ namespace aux {
|
||||||
peer_connection* p = (*i).get();
|
peer_connection* p = (*i).get();
|
||||||
++i;
|
++i;
|
||||||
// ignore connections that already have a torrent, since they
|
// ignore connections that already have a torrent, since they
|
||||||
// are ticket through the torrents' second_ticket
|
// are ticked through the torrents' second_tick
|
||||||
if (!p->associated_torrent().expired()) continue;
|
if (!p->associated_torrent().expired()) continue;
|
||||||
if (m_last_tick - p->connected_time() > seconds(m_settings.handshake_timeout))
|
if (m_last_tick - p->connected_time() > seconds(m_settings.handshake_timeout))
|
||||||
p->disconnect("timeout: incoming connection");
|
p->disconnect("timeout: incoming connection");
|
||||||
|
@ -1070,8 +1070,6 @@ namespace aux {
|
||||||
torrent_map::iterator least_recently_scraped = m_torrents.begin();
|
torrent_map::iterator least_recently_scraped = m_torrents.begin();
|
||||||
int num_paused_auto_managed = 0;
|
int num_paused_auto_managed = 0;
|
||||||
|
|
||||||
// check each torrent for tracker updates
|
|
||||||
// TODO: do this in a timer-event in each torrent instead
|
|
||||||
for (torrent_map::iterator i = m_torrents.begin();
|
for (torrent_map::iterator i = m_torrents.begin();
|
||||||
i != m_torrents.end();)
|
i != m_torrents.end();)
|
||||||
{
|
{
|
||||||
|
@ -1374,7 +1372,7 @@ namespace aux {
|
||||||
{
|
{
|
||||||
torrent* t = *i;
|
torrent* t = *i;
|
||||||
if (!t->is_paused() && !is_active(t, settings())
|
if (!t->is_paused() && !is_active(t, settings())
|
||||||
&& hard_limit > 0 && total_running < m_max_uploads)
|
&& hard_limit > 0)
|
||||||
{
|
{
|
||||||
--hard_limit;
|
--hard_limit;
|
||||||
++total_running;
|
++total_running;
|
||||||
|
@ -1403,7 +1401,7 @@ namespace aux {
|
||||||
{
|
{
|
||||||
torrent* t = *i;
|
torrent* t = *i;
|
||||||
if (!t->is_paused() && !is_active(t, settings())
|
if (!t->is_paused() && !is_active(t, settings())
|
||||||
&& hard_limit > 0 && total_running < m_max_uploads)
|
&& hard_limit > 0)
|
||||||
{
|
{
|
||||||
--hard_limit;
|
--hard_limit;
|
||||||
++total_running;
|
++total_running;
|
||||||
|
@ -1612,8 +1610,6 @@ namespace aux {
|
||||||
if (m_listen_interface.port() != 0) open_listen_port();
|
if (m_listen_interface.port() != 0) open_listen_port();
|
||||||
}
|
}
|
||||||
|
|
||||||
ptime timer = time_now();
|
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
error_code ec;
|
error_code ec;
|
||||||
|
|
|
@ -1674,7 +1674,7 @@ namespace libtorrent
|
||||||
{
|
{
|
||||||
if (alerts().should_post<file_renamed_alert>())
|
if (alerts().should_post<file_renamed_alert>())
|
||||||
alerts().post_alert(file_renamed_alert(get_handle(), j.str, j.piece));
|
alerts().post_alert(file_renamed_alert(get_handle(), j.str, j.piece));
|
||||||
m_torrent_file->files().rename_file(j.piece, j.str);
|
m_torrent_file->rename_file(j.piece, j.str);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -2592,7 +2592,7 @@ namespace libtorrent
|
||||||
{
|
{
|
||||||
std::string new_filename = mapped_files->list_string_value_at(i);
|
std::string new_filename = mapped_files->list_string_value_at(i);
|
||||||
if (new_filename.empty()) continue;
|
if (new_filename.empty()) continue;
|
||||||
m_torrent_file->files().rename_file(i, new_filename);
|
m_torrent_file->rename_file(i, new_filename);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -330,12 +330,19 @@ namespace libtorrent
|
||||||
torrent_info::~torrent_info()
|
torrent_info::~torrent_info()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
void torrent_info::copy_on_write()
|
||||||
|
{
|
||||||
|
if (m_orig_files) return;
|
||||||
|
m_orig_files.reset(new file_storage(m_files));
|
||||||
|
}
|
||||||
|
|
||||||
void torrent_info::swap(torrent_info& ti)
|
void torrent_info::swap(torrent_info& ti)
|
||||||
{
|
{
|
||||||
using std::swap;
|
using std::swap;
|
||||||
m_urls.swap(ti.m_urls);
|
m_urls.swap(ti.m_urls);
|
||||||
m_url_seeds.swap(ti.m_url_seeds);
|
m_url_seeds.swap(ti.m_url_seeds);
|
||||||
m_files.swap(ti.m_files);
|
m_files.swap(ti.m_files);
|
||||||
|
m_orig_files.swap(ti.m_orig_files);
|
||||||
m_nodes.swap(ti.m_nodes);
|
m_nodes.swap(ti.m_nodes);
|
||||||
swap(m_info_hash, ti.m_info_hash);
|
swap(m_info_hash, ti.m_info_hash);
|
||||||
swap(m_creation_date, ti.m_creation_date);
|
swap(m_creation_date, ti.m_creation_date);
|
||||||
|
|
|
@ -243,7 +243,7 @@ namespace libtorrent
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::vector<file_slice> files = info.files().map_block(r.piece, r.start
|
std::vector<file_slice> files = info.orig_files().map_block(r.piece, r.start
|
||||||
, r.length);
|
, r.length);
|
||||||
|
|
||||||
for (std::vector<file_slice>::iterator i = files.begin();
|
for (std::vector<file_slice>::iterator i = files.begin();
|
||||||
|
@ -255,13 +255,13 @@ namespace libtorrent
|
||||||
if (using_proxy)
|
if (using_proxy)
|
||||||
{
|
{
|
||||||
request += m_url;
|
request += m_url;
|
||||||
std::string path = info.files().at(f.file_index).path.string();
|
std::string path = info.orig_files().at(f.file_index).path.string();
|
||||||
request += escape_path(path.c_str(), path.length());
|
request += escape_path(path.c_str(), path.length());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::string path = m_path;
|
std::string path = m_path;
|
||||||
path += info.files().at(f.file_index).path.string();
|
path += info.orig_files().at(f.file_index).path.string();
|
||||||
request += escape_path(path.c_str(), path.length());
|
request += escape_path(path.c_str(), path.length());
|
||||||
}
|
}
|
||||||
request += " HTTP/1.1\r\n";
|
request += " HTTP/1.1\r\n";
|
||||||
|
@ -434,7 +434,7 @@ namespace libtorrent
|
||||||
int file_index = m_file_requests.front();
|
int file_index = m_file_requests.front();
|
||||||
|
|
||||||
torrent_info const& info = t->torrent_file();
|
torrent_info const& info = t->torrent_file();
|
||||||
std::string path = info.files().at(file_index).path.string();
|
std::string path = info.orig_files().at(file_index).path.string();
|
||||||
path = escape_path(path.c_str(), path.length());
|
path = escape_path(path.c_str(), path.length());
|
||||||
size_t i = location.rfind(path);
|
size_t i = location.rfind(path);
|
||||||
if (i == std::string::npos)
|
if (i == std::string::npos)
|
||||||
|
@ -528,7 +528,7 @@ namespace libtorrent
|
||||||
}
|
}
|
||||||
|
|
||||||
int file_index = m_file_requests.front();
|
int file_index = m_file_requests.front();
|
||||||
peer_request in_range = info.files().map_file(file_index, range_start
|
peer_request in_range = info.orig_files().map_file(file_index, range_start
|
||||||
, int(range_end - range_start));
|
, int(range_end - range_start));
|
||||||
|
|
||||||
peer_request front_request = m_requests.front();
|
peer_request front_request = m_requests.front();
|
||||||
|
|
Loading…
Reference in New Issue