forked from premiere/premiere-libtorrent
improve resume data handling in client_test
This commit is contained in:
parent
6cdd598e7c
commit
fb60c23807
|
@ -561,6 +561,11 @@ void add_magnet(lt::session& ses, lt::string_view uri)
|
||||||
}
|
}
|
||||||
ec.clear();
|
ec.clear();
|
||||||
|
|
||||||
|
p.max_connections = max_connections_per_torrent;
|
||||||
|
p.max_uploads = -1;
|
||||||
|
p.upload_limit = torrent_upload_limit;
|
||||||
|
p.download_limit = torrent_download_limit;
|
||||||
|
|
||||||
if (seed_mode) p.flags |= lt::add_torrent_params::flag_seed_mode;
|
if (seed_mode) p.flags |= lt::add_torrent_params::flag_seed_mode;
|
||||||
if (disable_storage) p.storage = lt::disabled_storage_constructor;
|
if (disable_storage) p.storage = lt::disabled_storage_constructor;
|
||||||
if (share_mode) p.flags |= lt::add_torrent_params::flag_share_mode;
|
if (share_mode) p.flags |= lt::add_torrent_params::flag_share_mode;
|
||||||
|
@ -603,6 +608,10 @@ bool add_torrent(libtorrent::session& ses, std::string torrent)
|
||||||
if (disable_storage) p.storage = disabled_storage_constructor;
|
if (disable_storage) p.storage = disabled_storage_constructor;
|
||||||
if (share_mode) p.flags |= add_torrent_params::flag_share_mode;
|
if (share_mode) p.flags |= add_torrent_params::flag_share_mode;
|
||||||
|
|
||||||
|
p.max_connections = max_connections_per_torrent;
|
||||||
|
p.max_uploads = -1;
|
||||||
|
p.upload_limit = torrent_upload_limit;
|
||||||
|
p.download_limit = torrent_download_limit;
|
||||||
p.ti = ti;
|
p.ti = ti;
|
||||||
p.save_path = save_path;
|
p.save_path = save_path;
|
||||||
p.storage_mode = (storage_mode_t)allocation_mode;
|
p.storage_mode = (storage_mode_t)allocation_mode;
|
||||||
|
@ -848,13 +857,7 @@ bool handle_alert(torrent_view& view, session_view& ses_view
|
||||||
{
|
{
|
||||||
torrent_handle h = p->handle;
|
torrent_handle h = p->handle;
|
||||||
|
|
||||||
// TODO: why aren't these set in the add_torrent_params
|
h.save_resume_data(torrent_handle::save_info_dict | torrent_handle::only_if_modified);
|
||||||
h.set_max_connections(max_connections_per_torrent);
|
|
||||||
h.set_max_uploads(-1);
|
|
||||||
h.set_upload_limit(torrent_upload_limit);
|
|
||||||
h.set_download_limit(torrent_download_limit);
|
|
||||||
|
|
||||||
h.save_resume_data(torrent_handle::save_info_dict);
|
|
||||||
++num_outstanding_resume_data;
|
++num_outstanding_resume_data;
|
||||||
|
|
||||||
// if we have a peer specified, connect to it
|
// if we have a peer specified, connect to it
|
||||||
|
@ -895,12 +898,9 @@ bool handle_alert(torrent_view& view, session_view& ses_view
|
||||||
else if (save_resume_data_failed_alert* p = alert_cast<save_resume_data_failed_alert>(a))
|
else if (save_resume_data_failed_alert* p = alert_cast<save_resume_data_failed_alert>(a))
|
||||||
{
|
{
|
||||||
--num_outstanding_resume_data;
|
--num_outstanding_resume_data;
|
||||||
torrent_handle h = p->handle;
|
// don't print the error if it was just that we didn't need to save resume
|
||||||
if (h.is_valid())
|
// data. Returning true means "handled" and not printed to the log
|
||||||
{
|
return p->error == lt::errors::resume_data_not_modified;
|
||||||
std::fprintf(stderr, "FAILED TO SAVE RESUME DATA: %s\n"
|
|
||||||
, h.status().name.c_str());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (torrent_paused_alert* p = alert_cast<torrent_paused_alert>(a))
|
else if (torrent_paused_alert* p = alert_cast<torrent_paused_alert>(a))
|
||||||
{
|
{
|
||||||
|
@ -1188,9 +1188,11 @@ MAGNETURL is a magnet link
|
||||||
#else
|
#else
|
||||||
int ret = mkdir(path_append(save_path, ".resume").c_str(), 0777);
|
int ret = mkdir(path_append(save_path, ".resume").c_str(), 0777);
|
||||||
#endif
|
#endif
|
||||||
if (ret < 0)
|
if (ret < 0 && errno != EEXIST)
|
||||||
|
{
|
||||||
std::fprintf(stderr, "failed to create resume file directory: (%d) %s\n"
|
std::fprintf(stderr, "failed to create resume file directory: (%d) %s\n"
|
||||||
, errno, strerror(errno));
|
, errno, strerror(errno));
|
||||||
|
}
|
||||||
|
|
||||||
settings.set_str(settings_pack::user_agent, "client_test/" LIBTORRENT_VERSION);
|
settings.set_str(settings_pack::user_agent, "client_test/" LIBTORRENT_VERSION);
|
||||||
settings.set_int(settings_pack::alert_mask, alert::all_categories
|
settings.set_int(settings_pack::alert_mask, alert::all_categories
|
||||||
|
@ -1274,6 +1276,10 @@ MAGNETURL is a magnet link
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// we're loading this torrent from resume data. There's no need to
|
||||||
|
// re-save the resume data immediately.
|
||||||
|
p.flags &= ~add_torrent_params::flag_need_save_resume;
|
||||||
|
|
||||||
ses.async_add_torrent(std::move(p));
|
ses.async_add_torrent(std::move(p));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -220,7 +220,7 @@ namespace libtorrent
|
||||||
// if this flag is set (which it is by default) the torrent will be
|
// if this flag is set (which it is by default) the torrent will be
|
||||||
// considered needing to save its resume data immediately as it's
|
// considered needing to save its resume data immediately as it's
|
||||||
// added. New torrents that don't have any resume data should do that.
|
// added. New torrents that don't have any resume data should do that.
|
||||||
// This flag is cleared by a successful call to read_resume_data()
|
// This flag is cleared by a successful call to save_resume_data()
|
||||||
flag_need_save_resume = 0x10000,
|
flag_need_save_resume = 0x10000,
|
||||||
|
|
||||||
#ifndef TORRENT_NO_DEPRECATE
|
#ifndef TORRENT_NO_DEPRECATE
|
||||||
|
|
Loading…
Reference in New Issue