fix bug in previous commit
This commit is contained in:
parent
665b553941
commit
8b66fbe194
|
@ -293,7 +293,7 @@ namespace libtorrent
|
||||||
bool is_deleted() const { return m_deleted; }
|
bool is_deleted() const { return m_deleted; }
|
||||||
|
|
||||||
// starts the announce timer
|
// starts the announce timer
|
||||||
void start();
|
void start(add_torrent_params const& p);
|
||||||
|
|
||||||
void start_download_url();
|
void start_download_url();
|
||||||
|
|
||||||
|
|
|
@ -4627,7 +4627,7 @@ retry:
|
||||||
|
|
||||||
torrent_ptr = boost::make_shared<torrent>(boost::ref(*this)
|
torrent_ptr = boost::make_shared<torrent>(boost::ref(*this)
|
||||||
, 16 * 1024, queue_pos, boost::cref(params), boost::cref(*ih));
|
, 16 * 1024, queue_pos, boost::cref(params), boost::cref(*ih));
|
||||||
torrent_ptr->start();
|
torrent_ptr->start(params);
|
||||||
|
|
||||||
#ifndef TORRENT_DISABLE_EXTENSIONS
|
#ifndef TORRENT_DISABLE_EXTENSIONS
|
||||||
typedef std::vector<boost::function<
|
typedef std::vector<boost::function<
|
||||||
|
|
192
src/torrent.cpp
192
src/torrent.cpp
|
@ -273,6 +273,9 @@ namespace libtorrent
|
||||||
, m_pending_active_change(false)
|
, m_pending_active_change(false)
|
||||||
, m_use_resume_save_path(p.flags & add_torrent_params::flag_use_resume_save_path)
|
, m_use_resume_save_path(p.flags & add_torrent_params::flag_use_resume_save_path)
|
||||||
{
|
{
|
||||||
|
// we cannot log in the constructor, because it relies on shared_from_this
|
||||||
|
// being initialized, which happens after the constructor returns.
|
||||||
|
|
||||||
if (m_pinned)
|
if (m_pinned)
|
||||||
inc_stats_counter(counters::num_pinned_torrents);
|
inc_stats_counter(counters::num_pinned_torrents);
|
||||||
|
|
||||||
|
@ -348,99 +351,6 @@ namespace libtorrent
|
||||||
update_want_tick();
|
update_want_tick();
|
||||||
update_state_list();
|
update_state_list();
|
||||||
|
|
||||||
INVARIANT_CHECK;
|
|
||||||
|
|
||||||
#ifndef TORRENT_DISABLE_LOGGING
|
|
||||||
debug_log("creating torrent: %s max-uploads: %d max-connections: %d "
|
|
||||||
"upload-limit: %d download-limit: %d flags: %s%s%s%s%s%s%s%s%s%s%s%s"
|
|
||||||
"save-path: %s"
|
|
||||||
, torrent_file().name().c_str()
|
|
||||||
, p.max_uploads
|
|
||||||
, p.max_connections
|
|
||||||
, p.upload_limit
|
|
||||||
, p.download_limit
|
|
||||||
, (p.flags == add_torrent_params::flag_seed_mode)
|
|
||||||
? "seed-mode " : ""
|
|
||||||
, (p.flags == add_torrent_params::flag_override_resume_data)
|
|
||||||
? "override-resume-data " : ""
|
|
||||||
, (p.flags == add_torrent_params::flag_upload_mode)
|
|
||||||
? "upload-mode " : ""
|
|
||||||
, (p.flags == add_torrent_params::flag_share_mode)
|
|
||||||
? "share-mode " : ""
|
|
||||||
, (p.flags == add_torrent_params::flag_apply_ip_filter)
|
|
||||||
? "apply-ip-filter " : ""
|
|
||||||
, (p.flags == add_torrent_params::flag_paused)
|
|
||||||
? "paused " : ""
|
|
||||||
, (p.flags == add_torrent_params::flag_auto_managed)
|
|
||||||
? "auto-managed " : ""
|
|
||||||
, (p.flags == add_torrent_params::flag_merge_resume_trackers)
|
|
||||||
? "merge-resume-trackers " : ""
|
|
||||||
, (p.flags == add_torrent_params::flag_update_subscribe)
|
|
||||||
? "update-subscribe " : ""
|
|
||||||
, (p.flags == add_torrent_params::flag_super_seeding)
|
|
||||||
? "super-seeding " : ""
|
|
||||||
, (p.flags == add_torrent_params::flag_sequential_download)
|
|
||||||
? "sequential-download " : ""
|
|
||||||
, (p.flags == add_torrent_params::flag_use_resume_save_path)
|
|
||||||
? "resume-save-path " : ""
|
|
||||||
, p.save_path.c_str()
|
|
||||||
);
|
|
||||||
#endif
|
|
||||||
if (p.flags & add_torrent_params::flag_sequential_download)
|
|
||||||
m_sequential_download = true;
|
|
||||||
|
|
||||||
if (p.flags & add_torrent_params::flag_super_seeding)
|
|
||||||
{
|
|
||||||
m_super_seeding = true;
|
|
||||||
m_need_save_resume_data = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
set_max_uploads(p.max_uploads, false);
|
|
||||||
set_max_connections(p.max_connections, false);
|
|
||||||
set_limit_impl(p.upload_limit, peer_connection::upload_channel, false);
|
|
||||||
set_limit_impl(p.download_limit, peer_connection::download_channel, false);
|
|
||||||
|
|
||||||
if (!m_name && !m_url.empty()) m_name.reset(new std::string(m_url));
|
|
||||||
|
|
||||||
#ifndef TORRENT_NO_DEPRECATE
|
|
||||||
if (p.tracker_url && std::strlen(p.tracker_url) > 0)
|
|
||||||
{
|
|
||||||
m_trackers.push_back(announce_entry(p.tracker_url));
|
|
||||||
m_trackers.back().fail_limit = 0;
|
|
||||||
m_trackers.back().source = announce_entry::source_magnet_link;
|
|
||||||
m_torrent_file->add_tracker(p.tracker_url);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
for (std::vector<std::string>::const_iterator i = p.trackers.begin()
|
|
||||||
, end(p.trackers.end()); i != end; ++i)
|
|
||||||
{
|
|
||||||
m_trackers.push_back(announce_entry(*i));
|
|
||||||
m_trackers.back().fail_limit = 0;
|
|
||||||
m_trackers.back().source = announce_entry::source_magnet_link;
|
|
||||||
m_torrent_file->add_tracker(*i);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (settings().get_bool(settings_pack::prefer_udp_trackers))
|
|
||||||
prioritize_udp_trackers();
|
|
||||||
|
|
||||||
// if we don't have metadata, make this torrent pinned. The
|
|
||||||
// client may unpin it once we have metadata and it has had
|
|
||||||
// a chance to save it on the metadata_received_alert
|
|
||||||
if (!valid_metadata())
|
|
||||||
{
|
|
||||||
if (!m_pinned && m_refcount == 0)
|
|
||||||
inc_stats_counter(counters::num_pinned_torrents);
|
|
||||||
|
|
||||||
m_pinned = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
inc_stats_counter(counters::num_total_pieces_added
|
|
||||||
, m_torrent_file->num_pieces());
|
|
||||||
}
|
|
||||||
|
|
||||||
update_gauge();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void torrent::inc_stats_counter(int c, int value)
|
void torrent::inc_stats_counter(int c, int value)
|
||||||
|
@ -795,12 +705,104 @@ namespace libtorrent
|
||||||
m_verified.set_bit(piece);
|
m_verified.set_bit(piece);
|
||||||
}
|
}
|
||||||
|
|
||||||
void torrent::start()
|
void torrent::start(add_torrent_params const& p)
|
||||||
{
|
{
|
||||||
TORRENT_ASSERT(is_single_thread());
|
TORRENT_ASSERT(is_single_thread());
|
||||||
|
|
||||||
|
INVARIANT_CHECK;
|
||||||
|
|
||||||
#ifndef TORRENT_DISABLE_LOGGING
|
#ifndef TORRENT_DISABLE_LOGGING
|
||||||
debug_log("starting torrent");
|
debug_log("creating torrent: %s max-uploads: %d max-connections: %d "
|
||||||
|
"upload-limit: %d download-limit: %d flags: %s%s%s%s%s%s%s%s%s%s%s%s"
|
||||||
|
"save-path: %s"
|
||||||
|
, torrent_file().name().c_str()
|
||||||
|
, p.max_uploads
|
||||||
|
, p.max_connections
|
||||||
|
, p.upload_limit
|
||||||
|
, p.download_limit
|
||||||
|
, (p.flags == add_torrent_params::flag_seed_mode)
|
||||||
|
? "seed-mode " : ""
|
||||||
|
, (p.flags == add_torrent_params::flag_override_resume_data)
|
||||||
|
? "override-resume-data " : ""
|
||||||
|
, (p.flags == add_torrent_params::flag_upload_mode)
|
||||||
|
? "upload-mode " : ""
|
||||||
|
, (p.flags == add_torrent_params::flag_share_mode)
|
||||||
|
? "share-mode " : ""
|
||||||
|
, (p.flags == add_torrent_params::flag_apply_ip_filter)
|
||||||
|
? "apply-ip-filter " : ""
|
||||||
|
, (p.flags == add_torrent_params::flag_paused)
|
||||||
|
? "paused " : ""
|
||||||
|
, (p.flags == add_torrent_params::flag_auto_managed)
|
||||||
|
? "auto-managed " : ""
|
||||||
|
, (p.flags == add_torrent_params::flag_merge_resume_trackers)
|
||||||
|
? "merge-resume-trackers " : ""
|
||||||
|
, (p.flags == add_torrent_params::flag_update_subscribe)
|
||||||
|
? "update-subscribe " : ""
|
||||||
|
, (p.flags == add_torrent_params::flag_super_seeding)
|
||||||
|
? "super-seeding " : ""
|
||||||
|
, (p.flags == add_torrent_params::flag_sequential_download)
|
||||||
|
? "sequential-download " : ""
|
||||||
|
, (p.flags == add_torrent_params::flag_use_resume_save_path)
|
||||||
|
? "resume-save-path " : ""
|
||||||
|
, p.save_path.c_str()
|
||||||
|
);
|
||||||
#endif
|
#endif
|
||||||
|
if (p.flags & add_torrent_params::flag_sequential_download)
|
||||||
|
m_sequential_download = true;
|
||||||
|
|
||||||
|
if (p.flags & add_torrent_params::flag_super_seeding)
|
||||||
|
{
|
||||||
|
m_super_seeding = true;
|
||||||
|
m_need_save_resume_data = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
set_max_uploads(p.max_uploads, false);
|
||||||
|
set_max_connections(p.max_connections, false);
|
||||||
|
set_limit_impl(p.upload_limit, peer_connection::upload_channel, false);
|
||||||
|
set_limit_impl(p.download_limit, peer_connection::download_channel, false);
|
||||||
|
|
||||||
|
if (!m_name && !m_url.empty()) m_name.reset(new std::string(m_url));
|
||||||
|
|
||||||
|
#ifndef TORRENT_NO_DEPRECATE
|
||||||
|
if (p.tracker_url && std::strlen(p.tracker_url) > 0)
|
||||||
|
{
|
||||||
|
m_trackers.push_back(announce_entry(p.tracker_url));
|
||||||
|
m_trackers.back().fail_limit = 0;
|
||||||
|
m_trackers.back().source = announce_entry::source_magnet_link;
|
||||||
|
m_torrent_file->add_tracker(p.tracker_url);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
for (std::vector<std::string>::const_iterator i = p.trackers.begin()
|
||||||
|
, end(p.trackers.end()); i != end; ++i)
|
||||||
|
{
|
||||||
|
m_trackers.push_back(announce_entry(*i));
|
||||||
|
m_trackers.back().fail_limit = 0;
|
||||||
|
m_trackers.back().source = announce_entry::source_magnet_link;
|
||||||
|
m_torrent_file->add_tracker(*i);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settings().get_bool(settings_pack::prefer_udp_trackers))
|
||||||
|
prioritize_udp_trackers();
|
||||||
|
|
||||||
|
// if we don't have metadata, make this torrent pinned. The
|
||||||
|
// client may unpin it once we have metadata and it has had
|
||||||
|
// a chance to save it on the metadata_received_alert
|
||||||
|
if (!valid_metadata())
|
||||||
|
{
|
||||||
|
if (!m_pinned && m_refcount == 0)
|
||||||
|
inc_stats_counter(counters::num_pinned_torrents);
|
||||||
|
|
||||||
|
m_pinned = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
inc_stats_counter(counters::num_total_pieces_added
|
||||||
|
, m_torrent_file->num_pieces());
|
||||||
|
}
|
||||||
|
|
||||||
|
update_gauge();
|
||||||
|
|
||||||
std::vector<boost::uint64_t>().swap(m_file_progress);
|
std::vector<boost::uint64_t>().swap(m_file_progress);
|
||||||
|
|
||||||
if (m_resume_data)
|
if (m_resume_data)
|
||||||
|
|
Loading…
Reference in New Issue