added torrent_handle::clear_error() to retry a torrent that is in an error state (torrent_status::error is set)

This commit is contained in:
Arvid Norberg 2008-07-12 17:00:52 +00:00
parent 3162a03d0c
commit ff6cbbc6b6
8 changed files with 150 additions and 103 deletions

View File

@ -267,6 +267,7 @@ void bind_torrent_handle()
.def("is_paused", _(&torrent_handle::is_paused)) .def("is_paused", _(&torrent_handle::is_paused))
.def("pause", _(&torrent_handle::pause)) .def("pause", _(&torrent_handle::pause))
.def("resume", _(&torrent_handle::resume)) .def("resume", _(&torrent_handle::resume))
.def("clear_error", _(&torrent_handle::clear_error))
.def("is_auto_managed", _(&torrent_handle::is_auto_managed)) .def("is_auto_managed", _(&torrent_handle::is_auto_managed))
.def("auto_managed", _(&torrent_handle::auto_managed)) .def("auto_managed", _(&torrent_handle::auto_managed))

View File

@ -97,130 +97,131 @@
<li><a class="reference" href="#set-peer-upload-limit-set-peer-download-limit" id="id82" name="id82">set_peer_upload_limit() set_peer_download_limit()</a></li> <li><a class="reference" href="#set-peer-upload-limit-set-peer-download-limit" id="id82" name="id82">set_peer_upload_limit() set_peer_download_limit()</a></li>
<li><a class="reference" href="#id5" id="id83" name="id83">pause() resume() is_paused()</a></li> <li><a class="reference" href="#id5" id="id83" name="id83">pause() resume() is_paused()</a></li>
<li><a class="reference" href="#force-recheck" id="id84" name="id84">force_recheck()</a></li> <li><a class="reference" href="#force-recheck" id="id84" name="id84">force_recheck()</a></li>
<li><a class="reference" href="#resolve-countries" id="id85" name="id85">resolve_countries()</a></li> <li><a class="reference" href="#clear-error" id="id85" name="id85">clear_error()</a></li>
<li><a class="reference" href="#is-seed" id="id86" name="id86">is_seed()</a></li> <li><a class="reference" href="#resolve-countries" id="id86" name="id86">resolve_countries()</a></li>
<li><a class="reference" href="#is-auto-managed-auto-managed" id="id87" name="id87">is_auto_managed() auto_managed()</a></li> <li><a class="reference" href="#is-seed" id="id87" name="id87">is_seed()</a></li>
<li><a class="reference" href="#has-metadata" id="id88" name="id88">has_metadata()</a></li> <li><a class="reference" href="#is-auto-managed-auto-managed" id="id88" name="id88">is_auto_managed() auto_managed()</a></li>
<li><a class="reference" href="#set-tracker-login" id="id89" name="id89">set_tracker_login()</a></li> <li><a class="reference" href="#has-metadata" id="id89" name="id89">has_metadata()</a></li>
<li><a class="reference" href="#trackers-replace-trackers" id="id90" name="id90">trackers() replace_trackers()</a></li> <li><a class="reference" href="#set-tracker-login" id="id90" name="id90">set_tracker_login()</a></li>
<li><a class="reference" href="#add-url-seed-remove-url-seed-url-seeds" id="id91" name="id91">add_url_seed() remove_url_seed() url_seeds()</a></li> <li><a class="reference" href="#trackers-replace-trackers" id="id91" name="id91">trackers() replace_trackers()</a></li>
<li><a class="reference" href="#queue-position-queue-position-up-queue-position-down-queue-position-top-queue-position-bottom" id="id92" name="id92">queue_position() queue_position_up() queue_position_down() queue_position_top() queue_position_bottom()</a></li> <li><a class="reference" href="#add-url-seed-remove-url-seed-url-seeds" id="id92" name="id92">add_url_seed() remove_url_seed() url_seeds()</a></li>
<li><a class="reference" href="#use-interface" id="id93" name="id93">use_interface()</a></li> <li><a class="reference" href="#queue-position-queue-position-up-queue-position-down-queue-position-top-queue-position-bottom" id="id93" name="id93">queue_position() queue_position_up() queue_position_down() queue_position_top() queue_position_bottom()</a></li>
<li><a class="reference" href="#info-hash" id="id94" name="id94">info_hash()</a></li> <li><a class="reference" href="#use-interface" id="id94" name="id94">use_interface()</a></li>
<li><a class="reference" href="#id6" id="id95" name="id95">set_max_uploads() set_max_connections()</a></li> <li><a class="reference" href="#info-hash" id="id95" name="id95">info_hash()</a></li>
<li><a class="reference" href="#save-resume-data" id="id96" name="id96">save_resume_data()</a></li> <li><a class="reference" href="#id6" id="id96" name="id96">set_max_uploads() set_max_connections()</a></li>
<li><a class="reference" href="#id7" id="id97" name="id97">status()</a></li> <li><a class="reference" href="#save-resume-data" id="id97" name="id97">save_resume_data()</a></li>
<li><a class="reference" href="#get-download-queue" id="id98" name="id98">get_download_queue()</a></li> <li><a class="reference" href="#id7" id="id98" name="id98">status()</a></li>
<li><a class="reference" href="#get-peer-info" id="id99" name="id99">get_peer_info()</a></li> <li><a class="reference" href="#get-download-queue" id="id99" name="id99">get_download_queue()</a></li>
<li><a class="reference" href="#get-torrent-info" id="id100" name="id100">get_torrent_info()</a></li> <li><a class="reference" href="#get-peer-info" id="id100" name="id100">get_peer_info()</a></li>
<li><a class="reference" href="#is-valid" id="id101" name="id101">is_valid()</a></li> <li><a class="reference" href="#get-torrent-info" id="id101" name="id101">get_torrent_info()</a></li>
<li><a class="reference" href="#is-valid" id="id102" name="id102">is_valid()</a></li>
</ul> </ul>
</li> </li>
<li><a class="reference" href="#torrent-status" id="id102" name="id102">torrent_status</a></li> <li><a class="reference" href="#torrent-status" id="id103" name="id103">torrent_status</a></li>
<li><a class="reference" href="#peer-info" id="id103" name="id103">peer_info</a></li> <li><a class="reference" href="#peer-info" id="id104" name="id104">peer_info</a></li>
<li><a class="reference" href="#session-settings" id="id104" name="id104">session_settings</a></li> <li><a class="reference" href="#session-settings" id="id105" name="id105">session_settings</a></li>
<li><a class="reference" href="#pe-settings" id="id105" name="id105">pe_settings</a></li> <li><a class="reference" href="#pe-settings" id="id106" name="id106">pe_settings</a></li>
<li><a class="reference" href="#proxy-settings" id="id106" name="id106">proxy_settings</a></li> <li><a class="reference" href="#proxy-settings" id="id107" name="id107">proxy_settings</a></li>
<li><a class="reference" href="#ip-filter" id="id107" name="id107">ip_filter</a><ul> <li><a class="reference" href="#ip-filter" id="id108" name="id108">ip_filter</a><ul>
<li><a class="reference" href="#id10" id="id108" name="id108">ip_filter()</a></li> <li><a class="reference" href="#id10" id="id109" name="id109">ip_filter()</a></li>
<li><a class="reference" href="#add-rule" id="id109" name="id109">add_rule()</a></li> <li><a class="reference" href="#add-rule" id="id110" name="id110">add_rule()</a></li>
<li><a class="reference" href="#access" id="id110" name="id110">access()</a></li> <li><a class="reference" href="#access" id="id111" name="id111">access()</a></li>
<li><a class="reference" href="#export-filter" id="id111" name="id111">export_filter()</a></li> <li><a class="reference" href="#export-filter" id="id112" name="id112">export_filter()</a></li>
</ul> </ul>
</li> </li>
<li><a class="reference" href="#big-number" id="id112" name="id112">big_number</a></li> <li><a class="reference" href="#big-number" id="id113" name="id113">big_number</a></li>
<li><a class="reference" href="#bitfield" id="id113" name="id113">bitfield</a></li> <li><a class="reference" href="#bitfield" id="id114" name="id114">bitfield</a></li>
<li><a class="reference" href="#hasher" id="id114" name="id114">hasher</a></li> <li><a class="reference" href="#hasher" id="id115" name="id115">hasher</a></li>
<li><a class="reference" href="#fingerprint" id="id115" name="id115">fingerprint</a></li> <li><a class="reference" href="#fingerprint" id="id116" name="id116">fingerprint</a></li>
<li><a class="reference" href="#upnp-and-nat-pmp" id="id116" name="id116">UPnP and NAT-PMP</a><ul> <li><a class="reference" href="#upnp-and-nat-pmp" id="id117" name="id117">UPnP and NAT-PMP</a><ul>
<li><a class="reference" href="#add-mapping" id="id117" name="id117">add_mapping</a></li> <li><a class="reference" href="#add-mapping" id="id118" name="id118">add_mapping</a></li>
<li><a class="reference" href="#delete-mapping" id="id118" name="id118">delete_mapping</a></li> <li><a class="reference" href="#delete-mapping" id="id119" name="id119">delete_mapping</a></li>
<li><a class="reference" href="#router-model" id="id119" name="id119">router_model()</a></li> <li><a class="reference" href="#router-model" id="id120" name="id120">router_model()</a></li>
</ul> </ul>
</li> </li>
<li><a class="reference" href="#free-functions" id="id120" name="id120">free functions</a><ul> <li><a class="reference" href="#free-functions" id="id121" name="id121">free functions</a><ul>
<li><a class="reference" href="#identify-client" id="id121" name="id121">identify_client()</a></li> <li><a class="reference" href="#identify-client" id="id122" name="id122">identify_client()</a></li>
<li><a class="reference" href="#client-fingerprint" id="id122" name="id122">client_fingerprint()</a></li> <li><a class="reference" href="#client-fingerprint" id="id123" name="id123">client_fingerprint()</a></li>
<li><a class="reference" href="#bdecode-bencode" id="id123" name="id123">bdecode() bencode()</a></li> <li><a class="reference" href="#bdecode-bencode" id="id124" name="id124">bdecode() bencode()</a></li>
</ul> </ul>
</li> </li>
<li><a class="reference" href="#alerts" id="id124" name="id124">alerts</a><ul> <li><a class="reference" href="#alerts" id="id125" name="id125">alerts</a><ul>
<li><a class="reference" href="#external-ip-alert" id="id125" name="id125">external_ip_alert</a></li> <li><a class="reference" href="#external-ip-alert" id="id126" name="id126">external_ip_alert</a></li>
<li><a class="reference" href="#listen-failed-alert" id="id126" name="id126">listen_failed_alert</a></li> <li><a class="reference" href="#listen-failed-alert" id="id127" name="id127">listen_failed_alert</a></li>
<li><a class="reference" href="#portmap-error-alert" id="id127" name="id127">portmap_error_alert</a></li> <li><a class="reference" href="#portmap-error-alert" id="id128" name="id128">portmap_error_alert</a></li>
<li><a class="reference" href="#portmap-alert" id="id128" name="id128">portmap_alert</a></li> <li><a class="reference" href="#portmap-alert" id="id129" name="id129">portmap_alert</a></li>
<li><a class="reference" href="#file-error-alert" id="id129" name="id129">file_error_alert</a></li> <li><a class="reference" href="#file-error-alert" id="id130" name="id130">file_error_alert</a></li>
<li><a class="reference" href="#tracker-announce-alert" id="id130" name="id130">tracker_announce_alert</a></li> <li><a class="reference" href="#tracker-announce-alert" id="id131" name="id131">tracker_announce_alert</a></li>
<li><a class="reference" href="#tracker-error-alert" id="id131" name="id131">tracker_error_alert</a></li> <li><a class="reference" href="#tracker-error-alert" id="id132" name="id132">tracker_error_alert</a></li>
<li><a class="reference" href="#tracker-reply-alert" id="id132" name="id132">tracker_reply_alert</a></li> <li><a class="reference" href="#tracker-reply-alert" id="id133" name="id133">tracker_reply_alert</a></li>
<li><a class="reference" href="#dht-reply-alert" id="id133" name="id133">dht_reply_alert</a></li> <li><a class="reference" href="#dht-reply-alert" id="id134" name="id134">dht_reply_alert</a></li>
<li><a class="reference" href="#tracker-warning-alert" id="id134" name="id134">tracker_warning_alert</a></li> <li><a class="reference" href="#tracker-warning-alert" id="id135" name="id135">tracker_warning_alert</a></li>
<li><a class="reference" href="#scrape-reply-alert" id="id135" name="id135">scrape_reply_alert</a></li> <li><a class="reference" href="#scrape-reply-alert" id="id136" name="id136">scrape_reply_alert</a></li>
<li><a class="reference" href="#scrape-failed-alert" id="id136" name="id136">scrape_failed_alert</a></li> <li><a class="reference" href="#scrape-failed-alert" id="id137" name="id137">scrape_failed_alert</a></li>
<li><a class="reference" href="#url-seed-alert" id="id137" name="id137">url_seed_alert</a></li> <li><a class="reference" href="#url-seed-alert" id="id138" name="id138">url_seed_alert</a></li>
<li><a class="reference" href="#hash-failed-alert" id="id138" name="id138">hash_failed_alert</a></li> <li><a class="reference" href="#hash-failed-alert" id="id139" name="id139">hash_failed_alert</a></li>
<li><a class="reference" href="#peer-ban-alert" id="id139" name="id139">peer_ban_alert</a></li> <li><a class="reference" href="#peer-ban-alert" id="id140" name="id140">peer_ban_alert</a></li>
<li><a class="reference" href="#peer-error-alert" id="id140" name="id140">peer_error_alert</a></li> <li><a class="reference" href="#peer-error-alert" id="id141" name="id141">peer_error_alert</a></li>
<li><a class="reference" href="#invalid-request-alert" id="id141" name="id141">invalid_request_alert</a></li> <li><a class="reference" href="#invalid-request-alert" id="id142" name="id142">invalid_request_alert</a></li>
<li><a class="reference" href="#torrent-finished-alert" id="id142" name="id142">torrent_finished_alert</a></li> <li><a class="reference" href="#torrent-finished-alert" id="id143" name="id143">torrent_finished_alert</a></li>
<li><a class="reference" href="#metadata-failed-alert" id="id143" name="id143">metadata_failed_alert</a></li> <li><a class="reference" href="#metadata-failed-alert" id="id144" name="id144">metadata_failed_alert</a></li>
<li><a class="reference" href="#metadata-received-alert" id="id144" name="id144">metadata_received_alert</a></li> <li><a class="reference" href="#metadata-received-alert" id="id145" name="id145">metadata_received_alert</a></li>
<li><a class="reference" href="#fastresume-rejected-alert" id="id145" name="id145">fastresume_rejected_alert</a></li> <li><a class="reference" href="#fastresume-rejected-alert" id="id146" name="id146">fastresume_rejected_alert</a></li>
<li><a class="reference" href="#peer-blocked-alert" id="id146" name="id146">peer_blocked_alert</a></li> <li><a class="reference" href="#peer-blocked-alert" id="id147" name="id147">peer_blocked_alert</a></li>
<li><a class="reference" href="#storage-moved-alert" id="id147" name="id147">storage_moved_alert</a></li> <li><a class="reference" href="#storage-moved-alert" id="id148" name="id148">storage_moved_alert</a></li>
<li><a class="reference" href="#torrent-paused-alert" id="id148" name="id148">torrent_paused_alert</a></li> <li><a class="reference" href="#torrent-paused-alert" id="id149" name="id149">torrent_paused_alert</a></li>
<li><a class="reference" href="#torrent-resumed-alert" id="id149" name="id149">torrent_resumed_alert</a></li> <li><a class="reference" href="#torrent-resumed-alert" id="id150" name="id150">torrent_resumed_alert</a></li>
<li><a class="reference" href="#save-resume-data-alert" id="id150" name="id150">save_resume_data_alert</a></li> <li><a class="reference" href="#save-resume-data-alert" id="id151" name="id151">save_resume_data_alert</a></li>
<li><a class="reference" href="#save-resume-data-failed-alert" id="id151" name="id151">save_resume_data_failed_alert</a></li> <li><a class="reference" href="#save-resume-data-failed-alert" id="id152" name="id152">save_resume_data_failed_alert</a></li>
<li><a class="reference" href="#dispatcher" id="id152" name="id152">dispatcher</a></li> <li><a class="reference" href="#dispatcher" id="id153" name="id153">dispatcher</a></li>
</ul> </ul>
</li> </li>
<li><a class="reference" href="#exceptions" id="id153" name="id153">exceptions</a><ul> <li><a class="reference" href="#exceptions" id="id154" name="id154">exceptions</a><ul>
<li><a class="reference" href="#invalid-handle" id="id154" name="id154">invalid_handle</a></li> <li><a class="reference" href="#invalid-handle" id="id155" name="id155">invalid_handle</a></li>
<li><a class="reference" href="#duplicate-torrent" id="id155" name="id155">duplicate_torrent</a></li> <li><a class="reference" href="#duplicate-torrent" id="id156" name="id156">duplicate_torrent</a></li>
<li><a class="reference" href="#invalid-encoding" id="id156" name="id156">invalid_encoding</a></li> <li><a class="reference" href="#invalid-encoding" id="id157" name="id157">invalid_encoding</a></li>
<li><a class="reference" href="#type-error" id="id157" name="id157">type_error</a></li> <li><a class="reference" href="#type-error" id="id158" name="id158">type_error</a></li>
<li><a class="reference" href="#invalid-torrent-file" id="id158" name="id158">invalid_torrent_file</a></li> <li><a class="reference" href="#invalid-torrent-file" id="id159" name="id159">invalid_torrent_file</a></li>
</ul> </ul>
</li> </li>
<li><a class="reference" href="#storage-interface" id="id159" name="id159">storage_interface</a><ul> <li><a class="reference" href="#storage-interface" id="id160" name="id160">storage_interface</a><ul>
<li><a class="reference" href="#initialize" id="id160" name="id160">initialize()</a></li> <li><a class="reference" href="#initialize" id="id161" name="id161">initialize()</a></li>
<li><a class="reference" href="#read" id="id161" name="id161">read()</a></li> <li><a class="reference" href="#read" id="id162" name="id162">read()</a></li>
<li><a class="reference" href="#write" id="id162" name="id162">write()</a></li> <li><a class="reference" href="#write" id="id163" name="id163">write()</a></li>
<li><a class="reference" href="#id12" id="id163" name="id163">move_storage()</a></li> <li><a class="reference" href="#id12" id="id164" name="id164">move_storage()</a></li>
<li><a class="reference" href="#verify-resume-data" id="id164" name="id164">verify_resume_data()</a></li> <li><a class="reference" href="#verify-resume-data" id="id165" name="id165">verify_resume_data()</a></li>
<li><a class="reference" href="#write-resume-data" id="id165" name="id165">write_resume_data()</a></li> <li><a class="reference" href="#write-resume-data" id="id166" name="id166">write_resume_data()</a></li>
<li><a class="reference" href="#move-slot" id="id166" name="id166">move_slot()</a></li> <li><a class="reference" href="#move-slot" id="id167" name="id167">move_slot()</a></li>
<li><a class="reference" href="#swap-slots" id="id167" name="id167">swap_slots()</a></li> <li><a class="reference" href="#swap-slots" id="id168" name="id168">swap_slots()</a></li>
<li><a class="reference" href="#swap-slots3" id="id168" name="id168">swap_slots3()</a></li> <li><a class="reference" href="#swap-slots3" id="id169" name="id169">swap_slots3()</a></li>
<li><a class="reference" href="#hash-for-slot" id="id169" name="id169">hash_for_slot()</a></li> <li><a class="reference" href="#hash-for-slot" id="id170" name="id170">hash_for_slot()</a></li>
<li><a class="reference" href="#release-files" id="id170" name="id170">release_files()</a></li> <li><a class="reference" href="#release-files" id="id171" name="id171">release_files()</a></li>
<li><a class="reference" href="#delete-files" id="id171" name="id171">delete_files()</a></li> <li><a class="reference" href="#delete-files" id="id172" name="id172">delete_files()</a></li>
</ul> </ul>
</li> </li>
<li><a class="reference" href="#queuing" id="id172" name="id172">queuing</a><ul> <li><a class="reference" href="#queuing" id="id173" name="id173">queuing</a><ul>
<li><a class="reference" href="#downloading" id="id173" name="id173">downloading</a></li> <li><a class="reference" href="#downloading" id="id174" name="id174">downloading</a></li>
<li><a class="reference" href="#seeding" id="id174" name="id174">seeding</a></li> <li><a class="reference" href="#seeding" id="id175" name="id175">seeding</a></li>
</ul> </ul>
</li> </li>
<li><a class="reference" href="#fast-resume" id="id175" name="id175">fast resume</a><ul> <li><a class="reference" href="#fast-resume" id="id176" name="id176">fast resume</a><ul>
<li><a class="reference" href="#file-format" id="id176" name="id176">file format</a></li> <li><a class="reference" href="#file-format" id="id177" name="id177">file format</a></li>
</ul> </ul>
</li> </li>
<li><a class="reference" href="#threads" id="id177" name="id177">threads</a></li> <li><a class="reference" href="#threads" id="id178" name="id178">threads</a></li>
<li><a class="reference" href="#storage-allocation" id="id178" name="id178">storage allocation</a><ul> <li><a class="reference" href="#storage-allocation" id="id179" name="id179">storage allocation</a><ul>
<li><a class="reference" href="#sparse-allocation" id="id179" name="id179">sparse allocation</a></li> <li><a class="reference" href="#sparse-allocation" id="id180" name="id180">sparse allocation</a></li>
<li><a class="reference" href="#full-allocation" id="id180" name="id180">full allocation</a></li> <li><a class="reference" href="#full-allocation" id="id181" name="id181">full allocation</a></li>
<li><a class="reference" href="#compact-allocation" id="id181" name="id181">compact allocation</a></li> <li><a class="reference" href="#compact-allocation" id="id182" name="id182">compact allocation</a></li>
</ul> </ul>
</li> </li>
<li><a class="reference" href="#extensions" id="id182" name="id182">extensions</a><ul> <li><a class="reference" href="#extensions" id="id183" name="id183">extensions</a><ul>
<li><a class="reference" href="#metadata-from-peers" id="id183" name="id183">metadata from peers</a></li> <li><a class="reference" href="#metadata-from-peers" id="id184" name="id184">metadata from peers</a></li>
<li><a class="reference" href="#http-seeding" id="id184" name="id184">HTTP seeding</a></li> <li><a class="reference" href="#http-seeding" id="id185" name="id185">HTTP seeding</a></li>
</ul> </ul>
</li> </li>
<li><a class="reference" href="#filename-checks" id="id185" name="id185">filename checks</a></li> <li><a class="reference" href="#filename-checks" id="id186" name="id186">filename checks</a></li>
<li><a class="reference" href="#acknowledgments" id="id186" name="id186">acknowledgments</a></li> <li><a class="reference" href="#acknowledgments" id="id187" name="id187">acknowledgments</a></li>
</ul> </ul>
</div> </div>
<div class="section"> <div class="section">
@ -1650,6 +1651,7 @@ struct torrent_handle
bool is_paused() const; bool is_paused() const;
bool is_seed() const; bool is_seed() const;
void force_recheck() const; void force_recheck() const;
void clear_error() const;
void resolve_countries(bool r); void resolve_countries(bool r);
bool resolve_countries() const; bool resolve_countries() const;
@ -1911,6 +1913,16 @@ compared to the piece hashes). Once the check is complete, the torrent will star
to peers again, as normal.</p> to peers again, as normal.</p>
</div> </div>
<div class="section"> <div class="section">
<h2><a id="clear-error" name="clear-error">clear_error()</a></h2>
<blockquote>
<pre class="literal-block">
void clear_error() const;
</pre>
</blockquote>
<p>If the torrent is in an error state (i.e. <tt class="docutils literal"><span class="pre">torrent_status::error</span></tt> is non-empty), this
will clear the error and start the torrent again.</p>
</div>
<div class="section">
<h2><a id="resolve-countries" name="resolve-countries">resolve_countries()</a></h2> <h2><a id="resolve-countries" name="resolve-countries">resolve_countries()</a></h2>
<blockquote> <blockquote>
<pre class="literal-block"> <pre class="literal-block">

View File

@ -1567,6 +1567,7 @@ Its declaration looks like this::
bool is_paused() const; bool is_paused() const;
bool is_seed() const; bool is_seed() const;
void force_recheck() const; void force_recheck() const;
void clear_error() const;
void resolve_countries(bool r); void resolve_countries(bool r);
bool resolve_countries() const; bool resolve_countries() const;
@ -1841,6 +1842,15 @@ will be added to the checking queue, and will be checked (all the files will be
compared to the piece hashes). Once the check is complete, the torrent will start connecting compared to the piece hashes). Once the check is complete, the torrent will start connecting
to peers again, as normal. to peers again, as normal.
clear_error()
-------------
::
void clear_error() const;
If the torrent is in an error state (i.e. ``torrent_status::error`` is non-empty), this
will clear the error and start the torrent again.
resolve_countries() resolve_countries()
------------------- -------------------

View File

@ -1156,6 +1156,12 @@ int main(int ac, char* av[])
} }
} }
if (c == 'c')
{
torrent_handle h = get_active_torrent(handles);
if (h.is_valid()) h.clear_error();
}
// toggle displays // toggle displays
if (c == 'i') print_peers = !print_peers; if (c == 'i') print_peers = !print_peers;
if (c == 'l') print_log = !print_log; if (c == 'l') print_log = !print_log;
@ -1205,7 +1211,7 @@ int main(int ac, char* av[])
std::stringstream out; std::stringstream out;
out << "[q] quit [i] toggle peers [d] toggle downloading pieces [p] toggle paused " out << "[q] quit [i] toggle peers [d] toggle downloading pieces [p] toggle paused "
"[a] toggle piece bar [s] toggle download sequential [f] toggle files " "[a] toggle piece bar [s] toggle download sequential [f] toggle files "
"[j] force recheck [space] toggle session pause\n" "[j] force recheck [space] toggle session pause [c] clear error\n"
"[1] toggle IP [2] toggle AS [3] toggle timers [4] toggle block progress " "[1] toggle IP [2] toggle AS [3] toggle timers [4] toggle block progress "
"[5] toggle peer rate [6] toggle failures [7] toggle send buffers\n"; "[5] toggle peer rate [6] toggle failures [7] toggle send buffers\n";

View File

@ -172,6 +172,8 @@ namespace libtorrent
torrent_status::state_t state() const { return m_state; } torrent_status::state_t state() const { return m_state; }
void set_state(torrent_status::state_t s); void set_state(torrent_status::state_t s);
void clear_error();
session_settings const& settings() const; session_settings const& settings() const;
aux::session_impl& session() { return m_ses; } aux::session_impl& session() { return m_ses; }

View File

@ -325,6 +325,8 @@ namespace libtorrent
void file_progress(std::vector<float>& progress) const TORRENT_DEPRECATED; void file_progress(std::vector<float>& progress) const TORRENT_DEPRECATED;
void file_progress(std::vector<size_type>& progress) const; void file_progress(std::vector<size_type>& progress) const;
void clear_error() const;
std::vector<announce_entry> const& trackers() const; std::vector<announce_entry> const& trackers() const;
void replace_trackers(std::vector<announce_entry> const&) const; void replace_trackers(std::vector<announce_entry> const&) const;

View File

@ -3604,6 +3604,14 @@ namespace libtorrent
} }
} }
void torrent::clear_error()
{
if (m_error.empty()) return;
if (m_ses.m_auto_manage_time_scaler > 2)
m_ses.m_auto_manage_time_scaler = 2;
m_error.clear();
}
void torrent::auto_managed(bool a) void torrent::auto_managed(bool a)
{ {
INVARIANT_CHECK; INVARIANT_CHECK;

View File

@ -319,6 +319,12 @@ namespace libtorrent
TORRENT_FORWARD(set_queue_position((std::numeric_limits<int>::max)())); TORRENT_FORWARD(set_queue_position((std::numeric_limits<int>::max)()));
} }
void torrent_handle::clear_error() const
{
INVARIANT_CHECK;
TORRENT_FORWARD(clear_error());
}
void torrent_handle::set_tracker_login(std::string const& name void torrent_handle::set_tracker_login(std::string const& name
, std::string const& password) const , std::string const& password) const
{ {