forked from premiere/premiere-libtorrent
remove m_resume_data and m_resume_data_loaded members from torrent
This commit is contained in:
parent
59da9f35a8
commit
e0ee12d4f3
|
@ -105,12 +105,6 @@ namespace libtorrent
|
||||||
struct piece_checker_data;
|
struct piece_checker_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct resume_data_t
|
|
||||||
{
|
|
||||||
std::vector<char> buf;
|
|
||||||
bdecode_node node;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct time_critical_piece
|
struct time_critical_piece
|
||||||
{
|
{
|
||||||
// when this piece was first requested
|
// when this piece was first requested
|
||||||
|
@ -1304,10 +1298,6 @@ namespace libtorrent
|
||||||
// set if there's an error on this torrent
|
// set if there's an error on this torrent
|
||||||
error_code m_error;
|
error_code m_error;
|
||||||
|
|
||||||
// used if there is any resume data
|
|
||||||
#error do we still need this?
|
|
||||||
boost::scoped_ptr<resume_data_t> m_resume_data;
|
|
||||||
|
|
||||||
// if the torrent is started without metadata, it may
|
// if the torrent is started without metadata, it may
|
||||||
// still be given a name until the metadata is received
|
// still be given a name until the metadata is received
|
||||||
// once the metadata is received this field will no
|
// once the metadata is received this field will no
|
||||||
|
@ -1494,7 +1484,9 @@ namespace libtorrent
|
||||||
// torrent.
|
// torrent.
|
||||||
bool m_super_seeding:1;
|
bool m_super_seeding:1;
|
||||||
|
|
||||||
#error a 1 bit hole here
|
// if this is set, whenever transitioning into a downloading/seeding state
|
||||||
|
// from a non-downloading/seeding state, the torrent is paused.
|
||||||
|
bool m_stop_when_ready:1;
|
||||||
|
|
||||||
#ifndef TORRENT_NO_DEPRECATE
|
#ifndef TORRENT_NO_DEPRECATE
|
||||||
#ifndef TORRENT_DISABLE_RESOLVE_COUNTRIES
|
#ifndef TORRENT_DISABLE_RESOLVE_COUNTRIES
|
||||||
|
@ -1686,18 +1678,6 @@ namespace libtorrent
|
||||||
// flapping. If the state changes back during this period, we cancel the
|
// flapping. If the state changes back during this period, we cancel the
|
||||||
// quarantine
|
// quarantine
|
||||||
bool m_pending_active_change:1;
|
bool m_pending_active_change:1;
|
||||||
|
|
||||||
#error 2 missing bit here
|
|
||||||
|
|
||||||
// if this is set, whenever transitioning into a downloading/seeding state
|
|
||||||
// from a non-downloading/seeding state, the torrent is paused.
|
|
||||||
bool m_stop_when_ready:1;
|
|
||||||
|
|
||||||
#if TORRENT_USE_ASSERTS
|
|
||||||
public:
|
|
||||||
// set to false until we've loaded resume data
|
|
||||||
bool m_resume_data_loaded;
|
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct torrent_ref_holder
|
struct torrent_ref_holder
|
||||||
|
|
|
@ -66,6 +66,25 @@ namespace libtorrent
|
||||||
{
|
{
|
||||||
add_torrent_params ret;
|
add_torrent_params ret;
|
||||||
|
|
||||||
|
if (rd.dict_find_string_value("file-format")
|
||||||
|
!= "libtorrent resume file")
|
||||||
|
{
|
||||||
|
ec = error_code(errors::invalid_file_tag, get_libtorrent_category());
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string info_hash = rd.dict_find_string_value("info-hash");
|
||||||
|
if (info_hash.empty())
|
||||||
|
{
|
||||||
|
ec = error_code(errors::missing_info_hash, get_libtorrent_category());
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
#error we need to verify the info-hash from the resume data \
|
||||||
|
matches the torrent_info object or the magnet link in the URL field. This \
|
||||||
|
can only be done reliably on the libtorrent side as the torrent is being \
|
||||||
|
added. i.e. the info_hash needs to be saved
|
||||||
|
|
||||||
ret.total_uploaded = rd.dict_find_int_value("total_uploaded");
|
ret.total_uploaded = rd.dict_find_int_value("total_uploaded");
|
||||||
ret.total_downloaded = rd.dict_find_int_value("total_downloaded");
|
ret.total_downloaded = rd.dict_find_int_value("total_downloaded");
|
||||||
ret.active_time = rd.dict_find_int_value("active_time");
|
ret.active_time = rd.dict_find_int_value("active_time");
|
||||||
|
|
|
@ -237,6 +237,7 @@ namespace libtorrent
|
||||||
, m_auto_sequential(false)
|
, m_auto_sequential(false)
|
||||||
, m_seed_mode(false)
|
, m_seed_mode(false)
|
||||||
, m_super_seeding(false)
|
, m_super_seeding(false)
|
||||||
|
, m_stop_when_ready((p.flags & add_torrent_params::flag_stop_when_ready) != 0)
|
||||||
#ifndef TORRENT_NO_DEPRECATE
|
#ifndef TORRENT_NO_DEPRECATE
|
||||||
#ifndef TORRENT_DISABLE_RESOLVE_COUNTRIES
|
#ifndef TORRENT_DISABLE_RESOLVE_COUNTRIES
|
||||||
, m_resolving_country(false)
|
, m_resolving_country(false)
|
||||||
|
@ -277,7 +278,6 @@ namespace libtorrent
|
||||||
, m_last_scrape((std::numeric_limits<boost::int16_t>::min)())
|
, m_last_scrape((std::numeric_limits<boost::int16_t>::min)())
|
||||||
, m_progress_ppm(0)
|
, m_progress_ppm(0)
|
||||||
, m_pending_active_change(false)
|
, m_pending_active_change(false)
|
||||||
, m_stop_when_ready((p.flags & add_torrent_params::flag_stop_when_ready) != 0)
|
|
||||||
{
|
{
|
||||||
// we cannot log in the constructor, because it relies on shared_from_this
|
// we cannot log in the constructor, because it relies on shared_from_this
|
||||||
// being initialized, which happens after the constructor returns.
|
// being initialized, which happens after the constructor returns.
|
||||||
|
@ -292,9 +292,6 @@ namespace libtorrent
|
||||||
if (!p.resume_data.empty() && (p.flags & add_torrent_params::flag_override_resume_data) == 0)
|
if (!p.resume_data.empty() && (p.flags & add_torrent_params::flag_override_resume_data) == 0)
|
||||||
m_need_save_resume_data = false;
|
m_need_save_resume_data = false;
|
||||||
|
|
||||||
#if TORRENT_USE_ASSERTS
|
|
||||||
m_resume_data_loaded = false;
|
|
||||||
#endif
|
|
||||||
#if TORRENT_USE_UNC_PATHS
|
#if TORRENT_USE_UNC_PATHS
|
||||||
m_save_path = canonicalize_path(m_save_path);
|
m_save_path = canonicalize_path(m_save_path);
|
||||||
#endif
|
#endif
|
||||||
|
@ -349,12 +346,6 @@ namespace libtorrent
|
||||||
m_verifying.resize(m_torrent_file->num_pieces(), false);
|
m_verifying.resize(m_torrent_file->num_pieces(), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!p.resume_data.empty())
|
|
||||||
{
|
|
||||||
m_resume_data.reset(new resume_data_t);
|
|
||||||
m_resume_data->buf = p.resume_data;
|
|
||||||
}
|
|
||||||
|
|
||||||
int tier = 0;
|
int tier = 0;
|
||||||
std::vector<int>::const_iterator tier_iter = p.tracker_tiers.begin();
|
std::vector<int>::const_iterator tier_iter = p.tracker_tiers.begin();
|
||||||
for (std::vector<std::string>::const_iterator i = p.trackers.begin()
|
for (std::vector<std::string>::const_iterator i = p.trackers.begin()
|
||||||
|
@ -823,23 +814,6 @@ namespace libtorrent
|
||||||
|
|
||||||
m_file_progress.clear();
|
m_file_progress.clear();
|
||||||
|
|
||||||
if (m_resume_data)
|
|
||||||
{
|
|
||||||
int pos;
|
|
||||||
error_code ec;
|
|
||||||
if (bdecode(&m_resume_data->buf[0], &m_resume_data->buf[0]
|
|
||||||
+ m_resume_data->buf.size(), m_resume_data->node, ec, &pos) != 0)
|
|
||||||
{
|
|
||||||
m_resume_data.reset();
|
|
||||||
#ifndef TORRENT_DISABLE_LOGGING
|
|
||||||
debug_log("resume data rejected: %s pos: %d", ec.message().c_str(), pos);
|
|
||||||
#endif
|
|
||||||
if (m_ses.alerts().should_post<fastresume_rejected_alert>())
|
|
||||||
m_ses.alerts().emplace_alert<fastresume_rejected_alert>(get_handle()
|
|
||||||
, ec, "", static_cast<char const*>(0));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
update_want_peers();
|
update_want_peers();
|
||||||
update_want_scrape();
|
update_want_scrape();
|
||||||
update_want_tick();
|
update_want_tick();
|
||||||
|
@ -1864,43 +1838,6 @@ namespace libtorrent
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_resume_data && m_resume_data->node.type() == bdecode_node::dict_t)
|
|
||||||
{
|
|
||||||
int ev = 0;
|
|
||||||
if (m_resume_data->node.dict_find_string_value("file-format")
|
|
||||||
!= "libtorrent resume file")
|
|
||||||
{
|
|
||||||
ev = errors::invalid_file_tag;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string info_hash = m_resume_data->node.dict_find_string_value("info-hash");
|
|
||||||
if (!ev && info_hash.empty())
|
|
||||||
ev = errors::missing_info_hash;
|
|
||||||
|
|
||||||
if (!ev && sha1_hash(info_hash) != m_torrent_file->info_hash())
|
|
||||||
ev = errors::mismatching_info_hash;
|
|
||||||
|
|
||||||
if (ev && m_ses.alerts().should_post<fastresume_rejected_alert>())
|
|
||||||
{
|
|
||||||
error_code ec = error_code(ev, get_libtorrent_category());
|
|
||||||
m_ses.alerts().emplace_alert<fastresume_rejected_alert>(get_handle()
|
|
||||||
, ec, "", static_cast<char const*>(0));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ev)
|
|
||||||
{
|
|
||||||
#ifndef TORRENT_DISABLE_LOGGING
|
|
||||||
debug_log("fastresume data rejected: %s"
|
|
||||||
, error_code(ev, get_libtorrent_category()).message().c_str());
|
|
||||||
#endif
|
|
||||||
m_resume_data.reset();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#if TORRENT_USE_ASSERTS
|
|
||||||
m_resume_data_loaded = true;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
construct_storage();
|
construct_storage();
|
||||||
|
|
||||||
if (m_share_mode && valid_metadata())
|
if (m_share_mode && valid_metadata())
|
||||||
|
@ -1964,10 +1901,6 @@ namespace libtorrent
|
||||||
update_piece_priorities();
|
update_piece_priorities();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if TORRENT_USE_ASSERTS
|
|
||||||
m_resume_data_loaded = true;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (m_seed_mode)
|
if (m_seed_mode)
|
||||||
{
|
{
|
||||||
m_have_all = true;
|
m_have_all = true;
|
||||||
|
|
Loading…
Reference in New Issue