landed ssl branch back into trunk
This commit is contained in:
464
docs/manual.html
464
docs/manual.html
@@ -138,210 +138,208 @@
|
||||
<li><a class="reference internal" href="#scrape-tracker" id="id87">scrape_tracker()</a></li>
|
||||
<li><a class="reference internal" href="#connect-peer" id="id88">connect_peer()</a></li>
|
||||
<li><a class="reference internal" href="#name" id="id89">name()</a></li>
|
||||
<li><a class="reference internal" href="#set-ratio" id="id90">set_ratio()</a></li>
|
||||
<li><a class="reference internal" href="#set-upload-limit-set-download-limit-upload-limit-download-limit" id="id91">set_upload_limit() set_download_limit() upload_limit() download_limit()</a></li>
|
||||
<li><a class="reference internal" href="#set-sequential-download" id="id92">set_sequential_download()</a></li>
|
||||
<li><a class="reference internal" href="#get-peer-download-limit-get-peer-upload-limit-set-peer-upload-limit-set-peer-download-limit" id="id93">get_peer_download_limit() get_peer_upload_limit() set_peer_upload_limit() set_peer_download_limit()</a></li>
|
||||
<li><a class="reference internal" href="#pause-resume" id="id94">pause() resume()</a></li>
|
||||
<li><a class="reference internal" href="#flush-cache" id="id95">flush_cache()</a></li>
|
||||
<li><a class="reference internal" href="#force-recheck" id="id96">force_recheck()</a></li>
|
||||
<li><a class="reference internal" href="#clear-error" id="id97">clear_error()</a></li>
|
||||
<li><a class="reference internal" href="#set-upload-mode" id="id98">set_upload_mode()</a></li>
|
||||
<li><a class="reference internal" href="#set-share-mode" id="id99">set_share_mode()</a></li>
|
||||
<li><a class="reference internal" href="#apply-ip-filter" id="id100">apply_ip_filter()</a></li>
|
||||
<li><a class="reference internal" href="#resolve-countries" id="id101">resolve_countries()</a></li>
|
||||
<li><a class="reference internal" href="#is-seed" id="id102">is_seed()</a></li>
|
||||
<li><a class="reference internal" href="#auto-managed" id="id103">auto_managed()</a></li>
|
||||
<li><a class="reference internal" href="#set-metadata" id="id104">set_metadata()</a></li>
|
||||
<li><a class="reference internal" href="#set-tracker-login" id="id105">set_tracker_login()</a></li>
|
||||
<li><a class="reference internal" href="#trackers-replace-trackers-add-tracker" id="id106">trackers() replace_trackers() add_tracker()</a></li>
|
||||
<li><a class="reference internal" href="#add-url-seed-remove-url-seed-url-seeds" id="id107">add_url_seed() remove_url_seed() url_seeds()</a></li>
|
||||
<li><a class="reference internal" href="#add-http-seed-remove-http-seed-http-seeds" id="id108">add_http_seed() remove_http_seed() http_seeds()</a></li>
|
||||
<li><a class="reference internal" href="#queue-position-queue-position-up-queue-position-down-queue-position-top-queue-position-bottom" id="id109">queue_position() queue_position_up() queue_position_down() queue_position_top() queue_position_bottom()</a></li>
|
||||
<li><a class="reference internal" href="#set-priority" id="id110">set_priority()</a></li>
|
||||
<li><a class="reference internal" href="#use-interface" id="id111">use_interface()</a></li>
|
||||
<li><a class="reference internal" href="#info-hash" id="id112">info_hash()</a></li>
|
||||
<li><a class="reference internal" href="#set-max-uploads-max-uploads" id="id113">set_max_uploads() max_uploads()</a></li>
|
||||
<li><a class="reference internal" href="#set-max-connections-max-connections" id="id114">set_max_connections() max_connections()</a></li>
|
||||
<li><a class="reference internal" href="#save-resume-data" id="id115">save_resume_data()</a></li>
|
||||
<li><a class="reference internal" href="#need-save-resume-data" id="id116">need_save_resume_data()</a></li>
|
||||
<li><a class="reference internal" href="#id5" id="id117">status()</a></li>
|
||||
<li><a class="reference internal" href="#get-download-queue" id="id118">get_download_queue()</a></li>
|
||||
<li><a class="reference internal" href="#get-peer-info" id="id119">get_peer_info()</a></li>
|
||||
<li><a class="reference internal" href="#get-torrent-info" id="id120">get_torrent_info()</a></li>
|
||||
<li><a class="reference internal" href="#is-valid" id="id121">is_valid()</a></li>
|
||||
<li><a class="reference internal" href="#set-ssl-certificate" id="id122">set_ssl_certificate()</a></li>
|
||||
<li><a class="reference internal" href="#set-upload-limit-set-download-limit-upload-limit-download-limit" id="id90">set_upload_limit() set_download_limit() upload_limit() download_limit()</a></li>
|
||||
<li><a class="reference internal" href="#set-sequential-download" id="id91">set_sequential_download()</a></li>
|
||||
<li><a class="reference internal" href="#pause-resume" id="id92">pause() resume()</a></li>
|
||||
<li><a class="reference internal" href="#flush-cache" id="id93">flush_cache()</a></li>
|
||||
<li><a class="reference internal" href="#force-recheck" id="id94">force_recheck()</a></li>
|
||||
<li><a class="reference internal" href="#clear-error" id="id95">clear_error()</a></li>
|
||||
<li><a class="reference internal" href="#set-upload-mode" id="id96">set_upload_mode()</a></li>
|
||||
<li><a class="reference internal" href="#set-share-mode" id="id97">set_share_mode()</a></li>
|
||||
<li><a class="reference internal" href="#apply-ip-filter" id="id98">apply_ip_filter()</a></li>
|
||||
<li><a class="reference internal" href="#resolve-countries" id="id99">resolve_countries()</a></li>
|
||||
<li><a class="reference internal" href="#is-seed" id="id100">is_seed()</a></li>
|
||||
<li><a class="reference internal" href="#auto-managed" id="id101">auto_managed()</a></li>
|
||||
<li><a class="reference internal" href="#set-metadata" id="id102">set_metadata()</a></li>
|
||||
<li><a class="reference internal" href="#set-tracker-login" id="id103">set_tracker_login()</a></li>
|
||||
<li><a class="reference internal" href="#trackers-replace-trackers-add-tracker" id="id104">trackers() replace_trackers() add_tracker()</a></li>
|
||||
<li><a class="reference internal" href="#add-url-seed-remove-url-seed-url-seeds" id="id105">add_url_seed() remove_url_seed() url_seeds()</a></li>
|
||||
<li><a class="reference internal" href="#add-http-seed-remove-http-seed-http-seeds" id="id106">add_http_seed() remove_http_seed() http_seeds()</a></li>
|
||||
<li><a class="reference internal" href="#queue-position-queue-position-up-queue-position-down-queue-position-top-queue-position-bottom" id="id107">queue_position() queue_position_up() queue_position_down() queue_position_top() queue_position_bottom()</a></li>
|
||||
<li><a class="reference internal" href="#set-priority" id="id108">set_priority()</a></li>
|
||||
<li><a class="reference internal" href="#use-interface" id="id109">use_interface()</a></li>
|
||||
<li><a class="reference internal" href="#info-hash" id="id110">info_hash()</a></li>
|
||||
<li><a class="reference internal" href="#set-max-uploads-max-uploads" id="id111">set_max_uploads() max_uploads()</a></li>
|
||||
<li><a class="reference internal" href="#set-max-connections-max-connections" id="id112">set_max_connections() max_connections()</a></li>
|
||||
<li><a class="reference internal" href="#save-resume-data" id="id113">save_resume_data()</a></li>
|
||||
<li><a class="reference internal" href="#need-save-resume-data" id="id114">need_save_resume_data()</a></li>
|
||||
<li><a class="reference internal" href="#id5" id="id115">status()</a></li>
|
||||
<li><a class="reference internal" href="#get-download-queue" id="id116">get_download_queue()</a></li>
|
||||
<li><a class="reference internal" href="#get-peer-info" id="id117">get_peer_info()</a></li>
|
||||
<li><a class="reference internal" href="#get-torrent-info" id="id118">get_torrent_info()</a></li>
|
||||
<li><a class="reference internal" href="#is-valid" id="id119">is_valid()</a></li>
|
||||
<li><a class="reference internal" href="#set-ssl-certificate" id="id120">set_ssl_certificate()</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#torrent-status" id="id123">torrent_status</a></li>
|
||||
<li><a class="reference internal" href="#peer-info" id="id124">peer_info</a></li>
|
||||
<li><a class="reference internal" href="#feed-handle" id="id125">feed_handle</a><ul>
|
||||
<li><a class="reference internal" href="#update-feed" id="id126">update_feed()</a></li>
|
||||
<li><a class="reference internal" href="#get-feed-status" id="id127">get_feed_status()</a></li>
|
||||
<li><a class="reference internal" href="#set-settings-settings" id="id128">set_settings() settings()</a></li>
|
||||
<li><a class="reference internal" href="#torrent-status" id="id121">torrent_status</a></li>
|
||||
<li><a class="reference internal" href="#peer-info" id="id122">peer_info</a></li>
|
||||
<li><a class="reference internal" href="#feed-handle" id="id123">feed_handle</a><ul>
|
||||
<li><a class="reference internal" href="#update-feed" id="id124">update_feed()</a></li>
|
||||
<li><a class="reference internal" href="#get-feed-status" id="id125">get_feed_status()</a></li>
|
||||
<li><a class="reference internal" href="#set-settings-settings" id="id126">set_settings() settings()</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#feed-item" id="id129">feed_item</a></li>
|
||||
<li><a class="reference internal" href="#session-customization" id="id130">session customization</a><ul>
|
||||
<li><a class="reference internal" href="#presets" id="id131">presets</a></li>
|
||||
<li><a class="reference internal" href="#session-settings" id="id132">session_settings</a></li>
|
||||
<li><a class="reference internal" href="#feed-item" id="id127">feed_item</a></li>
|
||||
<li><a class="reference internal" href="#session-customization" id="id128">session customization</a><ul>
|
||||
<li><a class="reference internal" href="#presets" id="id129">presets</a></li>
|
||||
<li><a class="reference internal" href="#session-settings" id="id130">session_settings</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#pe-settings" id="id133">pe_settings</a></li>
|
||||
<li><a class="reference internal" href="#proxy-settings" id="id134">proxy_settings</a></li>
|
||||
<li><a class="reference internal" href="#ip-filter" id="id135">ip_filter</a><ul>
|
||||
<li><a class="reference internal" href="#id8" id="id136">ip_filter()</a></li>
|
||||
<li><a class="reference internal" href="#add-rule" id="id137">add_rule()</a></li>
|
||||
<li><a class="reference internal" href="#access" id="id138">access()</a></li>
|
||||
<li><a class="reference internal" href="#export-filter" id="id139">export_filter()</a></li>
|
||||
<li><a class="reference internal" href="#pe-settings" id="id131">pe_settings</a></li>
|
||||
<li><a class="reference internal" href="#proxy-settings" id="id132">proxy_settings</a></li>
|
||||
<li><a class="reference internal" href="#ip-filter" id="id133">ip_filter</a><ul>
|
||||
<li><a class="reference internal" href="#id8" id="id134">ip_filter()</a></li>
|
||||
<li><a class="reference internal" href="#add-rule" id="id135">add_rule()</a></li>
|
||||
<li><a class="reference internal" href="#access" id="id136">access()</a></li>
|
||||
<li><a class="reference internal" href="#export-filter" id="id137">export_filter()</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#big-number" id="id140">big_number</a></li>
|
||||
<li><a class="reference internal" href="#bitfield" id="id141">bitfield</a></li>
|
||||
<li><a class="reference internal" href="#hasher" id="id142">hasher</a></li>
|
||||
<li><a class="reference internal" href="#fingerprint" id="id143">fingerprint</a></li>
|
||||
<li><a class="reference internal" href="#upnp-and-nat-pmp" id="id144">UPnP and NAT-PMP</a><ul>
|
||||
<li><a class="reference internal" href="#add-mapping" id="id145">add_mapping()</a></li>
|
||||
<li><a class="reference internal" href="#delete-mapping" id="id146">delete_mapping()</a></li>
|
||||
<li><a class="reference internal" href="#router-model" id="id147">router_model()</a></li>
|
||||
<li><a class="reference internal" href="#big-number" id="id138">big_number</a></li>
|
||||
<li><a class="reference internal" href="#bitfield" id="id139">bitfield</a></li>
|
||||
<li><a class="reference internal" href="#hasher" id="id140">hasher</a></li>
|
||||
<li><a class="reference internal" href="#fingerprint" id="id141">fingerprint</a></li>
|
||||
<li><a class="reference internal" href="#upnp-and-nat-pmp" id="id142">UPnP and NAT-PMP</a><ul>
|
||||
<li><a class="reference internal" href="#add-mapping" id="id143">add_mapping()</a></li>
|
||||
<li><a class="reference internal" href="#delete-mapping" id="id144">delete_mapping()</a></li>
|
||||
<li><a class="reference internal" href="#router-model" id="id145">router_model()</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#free-functions" id="id148">free functions</a><ul>
|
||||
<li><a class="reference internal" href="#identify-client" id="id149">identify_client()</a></li>
|
||||
<li><a class="reference internal" href="#client-fingerprint" id="id150">client_fingerprint()</a></li>
|
||||
<li><a class="reference internal" href="#lazy-bdecode" id="id151">lazy_bdecode()</a></li>
|
||||
<li><a class="reference internal" href="#bdecode-bencode" id="id152">bdecode() bencode()</a></li>
|
||||
<li><a class="reference internal" href="#add-magnet-uri" id="id153">add_magnet_uri()</a></li>
|
||||
<li><a class="reference internal" href="#make-magnet-uri" id="id154">make_magnet_uri()</a></li>
|
||||
<li><a class="reference internal" href="#free-functions" id="id146">free functions</a><ul>
|
||||
<li><a class="reference internal" href="#identify-client" id="id147">identify_client()</a></li>
|
||||
<li><a class="reference internal" href="#client-fingerprint" id="id148">client_fingerprint()</a></li>
|
||||
<li><a class="reference internal" href="#lazy-bdecode" id="id149">lazy_bdecode()</a></li>
|
||||
<li><a class="reference internal" href="#bdecode-bencode" id="id150">bdecode() bencode()</a></li>
|
||||
<li><a class="reference internal" href="#add-magnet-uri" id="id151">add_magnet_uri()</a></li>
|
||||
<li><a class="reference internal" href="#make-magnet-uri" id="id152">make_magnet_uri()</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#alerts" id="id155">alerts</a><ul>
|
||||
<li><a class="reference internal" href="#torrent-added-alert" id="id156">torrent_added_alert</a></li>
|
||||
<li><a class="reference internal" href="#add-torrent-alert" id="id157">add_torrent_alert</a></li>
|
||||
<li><a class="reference internal" href="#torrent-removed-alert" id="id158">torrent_removed_alert</a></li>
|
||||
<li><a class="reference internal" href="#read-piece-alert" id="id159">read_piece_alert</a></li>
|
||||
<li><a class="reference internal" href="#external-ip-alert" id="id160">external_ip_alert</a></li>
|
||||
<li><a class="reference internal" href="#listen-failed-alert" id="id161">listen_failed_alert</a></li>
|
||||
<li><a class="reference internal" href="#listen-succeeded-alert" id="id162">listen_succeeded_alert</a></li>
|
||||
<li><a class="reference internal" href="#portmap-error-alert" id="id163">portmap_error_alert</a></li>
|
||||
<li><a class="reference internal" href="#portmap-alert" id="id164">portmap_alert</a></li>
|
||||
<li><a class="reference internal" href="#portmap-log-alert" id="id165">portmap_log_alert</a></li>
|
||||
<li><a class="reference internal" href="#file-error-alert" id="id166">file_error_alert</a></li>
|
||||
<li><a class="reference internal" href="#torrent-error-alert" id="id167">torrent_error_alert</a></li>
|
||||
<li><a class="reference internal" href="#file-renamed-alert" id="id168">file_renamed_alert</a></li>
|
||||
<li><a class="reference internal" href="#file-rename-failed-alert" id="id169">file_rename_failed_alert</a></li>
|
||||
<li><a class="reference internal" href="#tracker-announce-alert" id="id170">tracker_announce_alert</a></li>
|
||||
<li><a class="reference internal" href="#tracker-error-alert" id="id171">tracker_error_alert</a></li>
|
||||
<li><a class="reference internal" href="#tracker-reply-alert" id="id172">tracker_reply_alert</a></li>
|
||||
<li><a class="reference internal" href="#tracker-warning-alert" id="id173">tracker_warning_alert</a></li>
|
||||
<li><a class="reference internal" href="#scrape-reply-alert" id="id174">scrape_reply_alert</a></li>
|
||||
<li><a class="reference internal" href="#scrape-failed-alert" id="id175">scrape_failed_alert</a></li>
|
||||
<li><a class="reference internal" href="#url-seed-alert" id="id176">url_seed_alert</a></li>
|
||||
<li><a class="reference internal" href="#hash-failed-alert" id="id177">hash_failed_alert</a></li>
|
||||
<li><a class="reference internal" href="#peer-alert" id="id178">peer_alert</a></li>
|
||||
<li><a class="reference internal" href="#peer-connect-alert" id="id179">peer_connect_alert</a></li>
|
||||
<li><a class="reference internal" href="#peer-ban-alert" id="id180">peer_ban_alert</a></li>
|
||||
<li><a class="reference internal" href="#peer-snubbed-alert" id="id181">peer_snubbed_alert</a></li>
|
||||
<li><a class="reference internal" href="#peer-unsnubbed-alert" id="id182">peer_unsnubbed_alert</a></li>
|
||||
<li><a class="reference internal" href="#peer-error-alert" id="id183">peer_error_alert</a></li>
|
||||
<li><a class="reference internal" href="#peer-connected-alert" id="id184">peer_connected_alert</a></li>
|
||||
<li><a class="reference internal" href="#peer-disconnected-alert" id="id185">peer_disconnected_alert</a></li>
|
||||
<li><a class="reference internal" href="#invalid-request-alert" id="id186">invalid_request_alert</a></li>
|
||||
<li><a class="reference internal" href="#request-dropped-alert" id="id187">request_dropped_alert</a></li>
|
||||
<li><a class="reference internal" href="#block-timeout-alert" id="id188">block_timeout_alert</a></li>
|
||||
<li><a class="reference internal" href="#block-finished-alert" id="id189">block_finished_alert</a></li>
|
||||
<li><a class="reference internal" href="#lsd-peer-alert" id="id190">lsd_peer_alert</a></li>
|
||||
<li><a class="reference internal" href="#file-completed-alert" id="id191">file_completed_alert</a></li>
|
||||
<li><a class="reference internal" href="#block-downloading-alert" id="id192">block_downloading_alert</a></li>
|
||||
<li><a class="reference internal" href="#unwanted-block-alert" id="id193">unwanted_block_alert</a></li>
|
||||
<li><a class="reference internal" href="#torrent-delete-failed-alert" id="id194">torrent_delete_failed_alert</a></li>
|
||||
<li><a class="reference internal" href="#torrent-deleted-alert" id="id195">torrent_deleted_alert</a></li>
|
||||
<li><a class="reference internal" href="#torrent-finished-alert" id="id196">torrent_finished_alert</a></li>
|
||||
<li><a class="reference internal" href="#performance-alert" id="id197">performance_alert</a></li>
|
||||
<li><a class="reference internal" href="#state-changed-alert" id="id198">state_changed_alert</a></li>
|
||||
<li><a class="reference internal" href="#metadata-failed-alert" id="id199">metadata_failed_alert</a></li>
|
||||
<li><a class="reference internal" href="#metadata-received-alert" id="id200">metadata_received_alert</a></li>
|
||||
<li><a class="reference internal" href="#fastresume-rejected-alert" id="id201">fastresume_rejected_alert</a></li>
|
||||
<li><a class="reference internal" href="#peer-blocked-alert" id="id202">peer_blocked_alert</a></li>
|
||||
<li><a class="reference internal" href="#storage-moved-alert" id="id203">storage_moved_alert</a></li>
|
||||
<li><a class="reference internal" href="#storage-moved-failed-alert" id="id204">storage_moved_failed_alert</a></li>
|
||||
<li><a class="reference internal" href="#torrent-paused-alert" id="id205">torrent_paused_alert</a></li>
|
||||
<li><a class="reference internal" href="#torrent-resumed-alert" id="id206">torrent_resumed_alert</a></li>
|
||||
<li><a class="reference internal" href="#save-resume-data-alert" id="id207">save_resume_data_alert</a></li>
|
||||
<li><a class="reference internal" href="#save-resume-data-failed-alert" id="id208">save_resume_data_failed_alert</a></li>
|
||||
<li><a class="reference internal" href="#stats-alert" id="id209">stats_alert</a></li>
|
||||
<li><a class="reference internal" href="#cache-flushed-alert" id="id210">cache_flushed_alert</a></li>
|
||||
<li><a class="reference internal" href="#torrent-need-cert-alert" id="id211">torrent_need_cert_alert</a></li>
|
||||
<li><a class="reference internal" href="#dht-announce-alert" id="id212">dht_announce_alert</a></li>
|
||||
<li><a class="reference internal" href="#dht-get-peers-alert" id="id213">dht_get_peers_alert</a></li>
|
||||
<li><a class="reference internal" href="#dht-reply-alert" id="id214">dht_reply_alert</a></li>
|
||||
<li><a class="reference internal" href="#dht-bootstrap-alert" id="id215">dht_bootstrap_alert</a></li>
|
||||
<li><a class="reference internal" href="#anonymous-mode-alert" id="id216">anonymous_mode_alert</a></li>
|
||||
<li><a class="reference internal" href="#rss-alert" id="id217">rss_alert</a></li>
|
||||
<li><a class="reference internal" href="#incoming-connection-alert" id="id218">incoming_connection_alert</a></li>
|
||||
<li><a class="reference internal" href="#state-update-alert" id="id219">state_update_alert</a></li>
|
||||
<li><a class="reference internal" href="#alerts" id="id153">alerts</a><ul>
|
||||
<li><a class="reference internal" href="#torrent-added-alert" id="id154">torrent_added_alert</a></li>
|
||||
<li><a class="reference internal" href="#add-torrent-alert" id="id155">add_torrent_alert</a></li>
|
||||
<li><a class="reference internal" href="#torrent-removed-alert" id="id156">torrent_removed_alert</a></li>
|
||||
<li><a class="reference internal" href="#read-piece-alert" id="id157">read_piece_alert</a></li>
|
||||
<li><a class="reference internal" href="#external-ip-alert" id="id158">external_ip_alert</a></li>
|
||||
<li><a class="reference internal" href="#listen-failed-alert" id="id159">listen_failed_alert</a></li>
|
||||
<li><a class="reference internal" href="#listen-succeeded-alert" id="id160">listen_succeeded_alert</a></li>
|
||||
<li><a class="reference internal" href="#portmap-error-alert" id="id161">portmap_error_alert</a></li>
|
||||
<li><a class="reference internal" href="#portmap-alert" id="id162">portmap_alert</a></li>
|
||||
<li><a class="reference internal" href="#portmap-log-alert" id="id163">portmap_log_alert</a></li>
|
||||
<li><a class="reference internal" href="#file-error-alert" id="id164">file_error_alert</a></li>
|
||||
<li><a class="reference internal" href="#torrent-error-alert" id="id165">torrent_error_alert</a></li>
|
||||
<li><a class="reference internal" href="#file-renamed-alert" id="id166">file_renamed_alert</a></li>
|
||||
<li><a class="reference internal" href="#file-rename-failed-alert" id="id167">file_rename_failed_alert</a></li>
|
||||
<li><a class="reference internal" href="#tracker-announce-alert" id="id168">tracker_announce_alert</a></li>
|
||||
<li><a class="reference internal" href="#tracker-error-alert" id="id169">tracker_error_alert</a></li>
|
||||
<li><a class="reference internal" href="#tracker-reply-alert" id="id170">tracker_reply_alert</a></li>
|
||||
<li><a class="reference internal" href="#tracker-warning-alert" id="id171">tracker_warning_alert</a></li>
|
||||
<li><a class="reference internal" href="#scrape-reply-alert" id="id172">scrape_reply_alert</a></li>
|
||||
<li><a class="reference internal" href="#scrape-failed-alert" id="id173">scrape_failed_alert</a></li>
|
||||
<li><a class="reference internal" href="#url-seed-alert" id="id174">url_seed_alert</a></li>
|
||||
<li><a class="reference internal" href="#hash-failed-alert" id="id175">hash_failed_alert</a></li>
|
||||
<li><a class="reference internal" href="#peer-alert" id="id176">peer_alert</a></li>
|
||||
<li><a class="reference internal" href="#peer-connect-alert" id="id177">peer_connect_alert</a></li>
|
||||
<li><a class="reference internal" href="#peer-ban-alert" id="id178">peer_ban_alert</a></li>
|
||||
<li><a class="reference internal" href="#peer-snubbed-alert" id="id179">peer_snubbed_alert</a></li>
|
||||
<li><a class="reference internal" href="#peer-unsnubbed-alert" id="id180">peer_unsnubbed_alert</a></li>
|
||||
<li><a class="reference internal" href="#peer-error-alert" id="id181">peer_error_alert</a></li>
|
||||
<li><a class="reference internal" href="#peer-connected-alert" id="id182">peer_connected_alert</a></li>
|
||||
<li><a class="reference internal" href="#peer-disconnected-alert" id="id183">peer_disconnected_alert</a></li>
|
||||
<li><a class="reference internal" href="#invalid-request-alert" id="id184">invalid_request_alert</a></li>
|
||||
<li><a class="reference internal" href="#request-dropped-alert" id="id185">request_dropped_alert</a></li>
|
||||
<li><a class="reference internal" href="#block-timeout-alert" id="id186">block_timeout_alert</a></li>
|
||||
<li><a class="reference internal" href="#block-finished-alert" id="id187">block_finished_alert</a></li>
|
||||
<li><a class="reference internal" href="#lsd-peer-alert" id="id188">lsd_peer_alert</a></li>
|
||||
<li><a class="reference internal" href="#file-completed-alert" id="id189">file_completed_alert</a></li>
|
||||
<li><a class="reference internal" href="#block-downloading-alert" id="id190">block_downloading_alert</a></li>
|
||||
<li><a class="reference internal" href="#unwanted-block-alert" id="id191">unwanted_block_alert</a></li>
|
||||
<li><a class="reference internal" href="#torrent-delete-failed-alert" id="id192">torrent_delete_failed_alert</a></li>
|
||||
<li><a class="reference internal" href="#torrent-deleted-alert" id="id193">torrent_deleted_alert</a></li>
|
||||
<li><a class="reference internal" href="#torrent-finished-alert" id="id194">torrent_finished_alert</a></li>
|
||||
<li><a class="reference internal" href="#performance-alert" id="id195">performance_alert</a></li>
|
||||
<li><a class="reference internal" href="#state-changed-alert" id="id196">state_changed_alert</a></li>
|
||||
<li><a class="reference internal" href="#metadata-failed-alert" id="id197">metadata_failed_alert</a></li>
|
||||
<li><a class="reference internal" href="#metadata-received-alert" id="id198">metadata_received_alert</a></li>
|
||||
<li><a class="reference internal" href="#fastresume-rejected-alert" id="id199">fastresume_rejected_alert</a></li>
|
||||
<li><a class="reference internal" href="#peer-blocked-alert" id="id200">peer_blocked_alert</a></li>
|
||||
<li><a class="reference internal" href="#storage-moved-alert" id="id201">storage_moved_alert</a></li>
|
||||
<li><a class="reference internal" href="#storage-moved-failed-alert" id="id202">storage_moved_failed_alert</a></li>
|
||||
<li><a class="reference internal" href="#torrent-paused-alert" id="id203">torrent_paused_alert</a></li>
|
||||
<li><a class="reference internal" href="#torrent-resumed-alert" id="id204">torrent_resumed_alert</a></li>
|
||||
<li><a class="reference internal" href="#save-resume-data-alert" id="id205">save_resume_data_alert</a></li>
|
||||
<li><a class="reference internal" href="#save-resume-data-failed-alert" id="id206">save_resume_data_failed_alert</a></li>
|
||||
<li><a class="reference internal" href="#stats-alert" id="id207">stats_alert</a></li>
|
||||
<li><a class="reference internal" href="#cache-flushed-alert" id="id208">cache_flushed_alert</a></li>
|
||||
<li><a class="reference internal" href="#torrent-need-cert-alert" id="id209">torrent_need_cert_alert</a></li>
|
||||
<li><a class="reference internal" href="#dht-announce-alert" id="id210">dht_announce_alert</a></li>
|
||||
<li><a class="reference internal" href="#dht-get-peers-alert" id="id211">dht_get_peers_alert</a></li>
|
||||
<li><a class="reference internal" href="#dht-reply-alert" id="id212">dht_reply_alert</a></li>
|
||||
<li><a class="reference internal" href="#dht-bootstrap-alert" id="id213">dht_bootstrap_alert</a></li>
|
||||
<li><a class="reference internal" href="#anonymous-mode-alert" id="id214">anonymous_mode_alert</a></li>
|
||||
<li><a class="reference internal" href="#rss-alert" id="id215">rss_alert</a></li>
|
||||
<li><a class="reference internal" href="#incoming-connection-alert" id="id216">incoming_connection_alert</a></li>
|
||||
<li><a class="reference internal" href="#state-update-alert" id="id217">state_update_alert</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#alert-dispatcher" id="id220">alert dispatcher</a></li>
|
||||
<li><a class="reference internal" href="#exceptions" id="id221">exceptions</a><ul>
|
||||
<li><a class="reference internal" href="#libtorrent-exception" id="id222">libtorrent_exception</a></li>
|
||||
<li><a class="reference internal" href="#alert-dispatcher" id="id218">alert dispatcher</a></li>
|
||||
<li><a class="reference internal" href="#exceptions" id="id219">exceptions</a><ul>
|
||||
<li><a class="reference internal" href="#libtorrent-exception" id="id220">libtorrent_exception</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#error-code" id="id223">error_code</a><ul>
|
||||
<li><a class="reference internal" href="#translating-error-codes" id="id224">translating error codes</a></li>
|
||||
<li><a class="reference internal" href="#error-code" id="id221">error_code</a><ul>
|
||||
<li><a class="reference internal" href="#translating-error-codes" id="id222">translating error codes</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#storage-interface" id="id225">storage_interface</a><ul>
|
||||
<li><a class="reference internal" href="#initialize" id="id226">initialize()</a></li>
|
||||
<li><a class="reference internal" href="#has-any-file" id="id227">has_any_file()</a></li>
|
||||
<li><a class="reference internal" href="#hint-read" id="id228">hint_read()</a></li>
|
||||
<li><a class="reference internal" href="#readv-writev" id="id229">readv() writev()</a></li>
|
||||
<li><a class="reference internal" href="#sparse-end" id="id230">sparse_end()</a></li>
|
||||
<li><a class="reference internal" href="#id10" id="id231">move_storage()</a></li>
|
||||
<li><a class="reference internal" href="#verify-resume-data" id="id232">verify_resume_data()</a></li>
|
||||
<li><a class="reference internal" href="#write-resume-data" id="id233">write_resume_data()</a></li>
|
||||
<li><a class="reference internal" href="#move-slot" id="id234">move_slot()</a></li>
|
||||
<li><a class="reference internal" href="#swap-slots" id="id235">swap_slots()</a></li>
|
||||
<li><a class="reference internal" href="#swap-slots3" id="id236">swap_slots3()</a></li>
|
||||
<li><a class="reference internal" href="#id11" id="id237">rename_file()</a></li>
|
||||
<li><a class="reference internal" href="#release-files" id="id238">release_files()</a></li>
|
||||
<li><a class="reference internal" href="#delete-files" id="id239">delete_files()</a></li>
|
||||
<li><a class="reference internal" href="#finalize-file" id="id240">finalize_file()</a></li>
|
||||
<li><a class="reference internal" href="#example" id="id241">example</a></li>
|
||||
<li><a class="reference internal" href="#storage-interface" id="id223">storage_interface</a><ul>
|
||||
<li><a class="reference internal" href="#initialize" id="id224">initialize()</a></li>
|
||||
<li><a class="reference internal" href="#has-any-file" id="id225">has_any_file()</a></li>
|
||||
<li><a class="reference internal" href="#hint-read" id="id226">hint_read()</a></li>
|
||||
<li><a class="reference internal" href="#readv-writev" id="id227">readv() writev()</a></li>
|
||||
<li><a class="reference internal" href="#sparse-end" id="id228">sparse_end()</a></li>
|
||||
<li><a class="reference internal" href="#id10" id="id229">move_storage()</a></li>
|
||||
<li><a class="reference internal" href="#verify-resume-data" id="id230">verify_resume_data()</a></li>
|
||||
<li><a class="reference internal" href="#write-resume-data" id="id231">write_resume_data()</a></li>
|
||||
<li><a class="reference internal" href="#move-slot" id="id232">move_slot()</a></li>
|
||||
<li><a class="reference internal" href="#swap-slots" id="id233">swap_slots()</a></li>
|
||||
<li><a class="reference internal" href="#swap-slots3" id="id234">swap_slots3()</a></li>
|
||||
<li><a class="reference internal" href="#id11" id="id235">rename_file()</a></li>
|
||||
<li><a class="reference internal" href="#release-files" id="id236">release_files()</a></li>
|
||||
<li><a class="reference internal" href="#delete-files" id="id237">delete_files()</a></li>
|
||||
<li><a class="reference internal" href="#finalize-file" id="id238">finalize_file()</a></li>
|
||||
<li><a class="reference internal" href="#example" id="id239">example</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#magnet-links" id="id242">magnet links</a></li>
|
||||
<li><a class="reference internal" href="#queuing" id="id243">queuing</a><ul>
|
||||
<li><a class="reference internal" href="#downloading" id="id244">downloading</a></li>
|
||||
<li><a class="reference internal" href="#seeding" id="id245">seeding</a></li>
|
||||
<li><a class="reference internal" href="#magnet-links" id="id240">magnet links</a></li>
|
||||
<li><a class="reference internal" href="#queuing" id="id241">queuing</a><ul>
|
||||
<li><a class="reference internal" href="#downloading" id="id242">downloading</a></li>
|
||||
<li><a class="reference internal" href="#seeding" id="id243">seeding</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#fast-resume" id="id246">fast resume</a><ul>
|
||||
<li><a class="reference internal" href="#file-format" id="id247">file format</a></li>
|
||||
<li><a class="reference internal" href="#fast-resume" id="id244">fast resume</a><ul>
|
||||
<li><a class="reference internal" href="#file-format" id="id245">file format</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#storage-allocation" id="id248">storage allocation</a><ul>
|
||||
<li><a class="reference internal" href="#sparse-allocation" id="id249">sparse allocation</a></li>
|
||||
<li><a class="reference internal" href="#full-allocation" id="id250">full allocation</a></li>
|
||||
<li><a class="reference internal" href="#compact-allocation" id="id251">compact allocation</a></li>
|
||||
<li><a class="reference internal" href="#storage-allocation" id="id246">storage allocation</a><ul>
|
||||
<li><a class="reference internal" href="#sparse-allocation" id="id247">sparse allocation</a></li>
|
||||
<li><a class="reference internal" href="#full-allocation" id="id248">full allocation</a></li>
|
||||
<li><a class="reference internal" href="#compact-allocation" id="id249">compact allocation</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#extensions" id="id252">extensions</a><ul>
|
||||
<li><a class="reference internal" href="#metadata-from-peers" id="id253">metadata from peers</a></li>
|
||||
<li><a class="reference internal" href="#dont-have" id="id254">dont_have</a></li>
|
||||
<li><a class="reference internal" href="#http-seeding" id="id255">HTTP seeding</a></li>
|
||||
<li><a class="reference internal" href="#extensions" id="id250">extensions</a><ul>
|
||||
<li><a class="reference internal" href="#metadata-from-peers" id="id251">metadata from peers</a></li>
|
||||
<li><a class="reference internal" href="#dont-have" id="id252">dont_have</a></li>
|
||||
<li><a class="reference internal" href="#http-seeding" id="id253">HTTP seeding</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#piece-picker" id="id256">piece picker</a><ul>
|
||||
<li><a class="reference internal" href="#internal-representation" id="id257">internal representation</a></li>
|
||||
<li><a class="reference internal" href="#picker-strategy" id="id258">picker strategy</a></li>
|
||||
<li><a class="reference internal" href="#reverse-order" id="id259">reverse order</a></li>
|
||||
<li><a class="reference internal" href="#parole-mode" id="id260">parole mode</a></li>
|
||||
<li><a class="reference internal" href="#prioritize-partial-pieces" id="id261">prioritize partial pieces</a></li>
|
||||
<li><a class="reference internal" href="#prefer-whole-pieces" id="id262">prefer whole pieces</a></li>
|
||||
<li><a class="reference internal" href="#piece-picker" id="id254">piece picker</a><ul>
|
||||
<li><a class="reference internal" href="#internal-representation" id="id255">internal representation</a></li>
|
||||
<li><a class="reference internal" href="#picker-strategy" id="id256">picker strategy</a></li>
|
||||
<li><a class="reference internal" href="#reverse-order" id="id257">reverse order</a></li>
|
||||
<li><a class="reference internal" href="#parole-mode" id="id258">parole mode</a></li>
|
||||
<li><a class="reference internal" href="#prioritize-partial-pieces" id="id259">prioritize partial pieces</a></li>
|
||||
<li><a class="reference internal" href="#prefer-whole-pieces" id="id260">prefer whole pieces</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference internal" href="#ssl-torrents" id="id263">SSL torrents</a></li>
|
||||
<li><a class="reference internal" href="#ssl-torrents" id="id261">SSL torrents</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="overview">
|
||||
@@ -2402,7 +2400,6 @@ struct torrent_handle
|
||||
void remove_http_seed(std::string const& url);
|
||||
std::set<std::string> http_seeds() const;
|
||||
|
||||
void set_ratio(float ratio) const;
|
||||
int max_uploads() const;
|
||||
void set_max_uploads(int max_uploads) const;
|
||||
void set_max_connections(int max_connections) const;
|
||||
@@ -2414,11 +2411,6 @@ struct torrent_handle
|
||||
void set_sequential_download(bool sd) const;
|
||||
bool is_sequential_download() const;
|
||||
|
||||
int get_peer_upload_limit(tcp::endpoint ip);
|
||||
int get_peer_download_limit(tcp::endpoint ip);
|
||||
void set_peer_upload_limit(asio::ip::tcp::endpoint ip, int limit) const;
|
||||
void set_peer_download_limit(asio::ip::tcp::endpoint ip, int limit) const;
|
||||
|
||||
int queue_position() const;
|
||||
void queue_position_up() const;
|
||||
void queue_position_down() const;
|
||||
@@ -2790,21 +2782,6 @@ std::string name() const;
|
||||
case the torrent was started without metadata, and hasn't completely received it yet,
|
||||
it returns the name given to it when added to the session. See <tt class="docutils literal"><span class="pre">session::add_torrent</span></tt>.</p>
|
||||
</div>
|
||||
<div class="section" id="set-ratio">
|
||||
<h2>set_ratio()</h2>
|
||||
<blockquote>
|
||||
<pre class="literal-block">
|
||||
void set_ratio(float ratio) const;
|
||||
</pre>
|
||||
</blockquote>
|
||||
<p><tt class="docutils literal"><span class="pre">set_ratio()</span></tt> sets the desired download / upload ratio. If set to 0, it is considered being
|
||||
infinite. i.e. the client will always upload as much as it can, no matter how much it gets back
|
||||
in return. With this setting it will work much like the standard clients.</p>
|
||||
<p>Besides 0, the ratio can be set to any number greater than or equal to 1. It means how much to
|
||||
attempt to upload in return for each download. e.g. if set to 2, the client will try to upload
|
||||
2 bytes for every byte received. The default setting for this is 0, which will make it work
|
||||
as a standard client.</p>
|
||||
</div>
|
||||
<div class="section" id="set-upload-limit-set-download-limit-upload-limit-download-limit">
|
||||
<h2>set_upload_limit() set_download_limit() upload_limit() download_limit()</h2>
|
||||
<blockquote>
|
||||
@@ -2836,20 +2813,6 @@ picker will pick pieces in sequence instead of rarest first.</p>
|
||||
<p>Enabling sequential download will affect the piece distribution negatively in the swarm. It should be
|
||||
used sparingly.</p>
|
||||
</div>
|
||||
<div class="section" id="get-peer-download-limit-get-peer-upload-limit-set-peer-upload-limit-set-peer-download-limit">
|
||||
<h2>get_peer_download_limit() get_peer_upload_limit() set_peer_upload_limit() set_peer_download_limit()</h2>
|
||||
<blockquote>
|
||||
<pre class="literal-block">
|
||||
int get_peer_upload_limit(tcp::endpoint ip);
|
||||
int get_peer_download_limit(tcp::endpoint ip);
|
||||
void set_peer_upload_limit(asio::ip::tcp::endpoint ip, int limit) const;
|
||||
void set_peer_download_limit(asio::ip::tcp::endpoint ip, int limit) const;
|
||||
</pre>
|
||||
</blockquote>
|
||||
<p>Works like <tt class="docutils literal"><span class="pre">get_upload_limit</span></tt>, <tt class="docutils literal"><span class="pre">get_download_limit</span></tt>, <tt class="docutils literal"><span class="pre">set_upload_limit</span></tt> and
|
||||
<tt class="docutils literal"><span class="pre">set_download_limit</span></tt> respectively, but controls individual peer instead of the
|
||||
whole torrent.</p>
|
||||
</div>
|
||||
<div class="section" id="pause-resume">
|
||||
<h2>pause() resume()</h2>
|
||||
<blockquote>
|
||||
@@ -4516,8 +4479,6 @@ struct session_settings
|
||||
bool report_true_downloaded;
|
||||
bool strict_end_game_mode;
|
||||
|
||||
int default_peer_upload_rate;
|
||||
int default_peer_download_rate;
|
||||
bool broadcast_lsd;
|
||||
|
||||
bool enable_outgoing_utp;
|
||||
@@ -4574,6 +4535,8 @@ struct session_settings
|
||||
int read_job_every;
|
||||
bool use_disk_read_ahead;
|
||||
bool lock_files;
|
||||
|
||||
int ssl_listen;
|
||||
};
|
||||
</pre>
|
||||
<p><tt class="docutils literal"><span class="pre">version</span></tt> is automatically set to the libtorrent version you're using
|
||||
@@ -5124,12 +5087,6 @@ sometimes, but it may also avoid downloading a lot of redundant bytes.
|
||||
If this is <tt class="docutils literal"><span class="pre">false</span></tt>, libtorrent attempts to use each peer connection
|
||||
to its max, by always requesting something, even if it means requesting
|
||||
something that has been requested from another peer already.</p>
|
||||
<p><tt class="docutils literal"><span class="pre">default_peer_upload_rate</span></tt> and <tt class="docutils literal"><span class="pre">default_peer_download_rate</span></tt> specifies
|
||||
the default upload and download rate limits for peers, respectively. These
|
||||
default to 0, which means unlimited. These settings affect the rate limits
|
||||
set on new peer connections (not existing ones). The peer rate limits can
|
||||
be changed individually later using
|
||||
<a class="reference internal" href="#get-peer-download-limit-get-peer-upload-limit-set-peer-upload-limit-set-peer-download-limit">get_peer_download_limit() get_peer_upload_limit() set_peer_upload_limit() set_peer_download_limit()</a>.</p>
|
||||
<p>if <tt class="docutils literal"><span class="pre">broadcast_lsd</span></tt> is set to true, the local peer discovery
|
||||
(or Local Service Discovery) will not only use IP multicast, but also
|
||||
broadcast its messages. This can be useful when running on networks
|
||||
@@ -5301,6 +5258,11 @@ in the disk job queue. This gives a significant performance boost for seeding.</
|
||||
to or seeding from. This is implemented using <tt class="docutils literal"><span class="pre">fcntl(F_SETLK)</span></tt> on unix systems and
|
||||
by not passing in <tt class="docutils literal"><span class="pre">SHARE_READ</span></tt> and <tt class="docutils literal"><span class="pre">SHARE_WRITE</span></tt> on windows. This might prevent
|
||||
3rd party processes from corrupting the files under libtorrent's feet.</p>
|
||||
<p><tt class="docutils literal"><span class="pre">ssl_listen</span></tt> sets the listen port for SSL connections. If this is set to 0,
|
||||
no SSL listen port is opened. Otherwise a socket is opened on this port. This
|
||||
setting is only taken into account when opening the regular listen port, and
|
||||
won't re-open the listen socket simply by changing this setting.</p>
|
||||
<p>It defaults to port 4433.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="pe-settings">
|
||||
@@ -6501,7 +6463,7 @@ struct peer_disconnected_alert: peer_alert
|
||||
<div class="section" id="invalid-request-alert">
|
||||
<h2>invalid_request_alert</h2>
|
||||
<p>This is a debug alert that is generated by an incoming invalid piece request.
|
||||
<tt class="docutils literal"><span class="pre">Ïp</span></tt> is the address of the peer and the <tt class="docutils literal"><span class="pre">request</span></tt> is the actual incoming
|
||||
<tt class="docutils literal"><span class="pre">ìp</span></tt> is the address of the peer and the <tt class="docutils literal"><span class="pre">request</span></tt> is the actual incoming
|
||||
request from the peer.</p>
|
||||
<pre class="literal-block">
|
||||
struct invalid_request_alert: peer_alert
|
||||
@@ -7667,6 +7629,16 @@ metadata, and also torrents added by URL.</td>
|
||||
message is an extension to allow peers to advertise that the
|
||||
no longer has a piece they previously had.</td>
|
||||
</tr>
|
||||
<tr><td>111</td>
|
||||
<td>requires_ssl_connection</td>
|
||||
<td>The peer tried to connect to an SSL torrent without connecting
|
||||
over SSL.</td>
|
||||
</tr>
|
||||
<tr><td>112</td>
|
||||
<td>invalid_ssl_cert</td>
|
||||
<td>The peer tried to connect to a torrent with a certificate
|
||||
for a different torrent.</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>NAT-PMP errors:</p>
|
||||
@@ -8054,13 +8026,13 @@ std::string error_code_to_string(boost::system::error_code const& ec)
|
||||
static const char const* swedish[] =
|
||||
{
|
||||
"inget fel",
|
||||
"en fil i torrenten kolliderar med en fil frÂn en annan torrent",
|
||||
"en fil i torrenten kolliderar med en fil från en annan torrent",
|
||||
"hash check misslyckades",
|
||||
"torrent filen ‰r inte en dictionary",
|
||||
"'info'-nyckeln saknas eller ‰r korrupt i torrentfilen",
|
||||
"'info'-f‰ltet ‰r inte en dictionary",
|
||||
"'piece length' f‰ltet saknas eller ‰r korrupt i torrentfilen",
|
||||
"torrentfilen saknar namnf‰ltet",
|
||||
"torrent filen är inte en dictionary",
|
||||
"'info'-nyckeln saknas eller är korrupt i torrentfilen",
|
||||
"'info'-fältet är inte en dictionary",
|
||||
"'piece length' fältet saknas eller är korrupt i torrentfilen",
|
||||
"torrentfilen saknar namnfältet",
|
||||
"ogiltigt namn i torrentfilen (kan vara en attack)",
|
||||
// ... more strings here
|
||||
};
|
||||
@@ -8712,7 +8684,7 @@ as much space as has been downloaded.</p>
|
||||
</div>
|
||||
<div class="section" id="full-allocation">
|
||||
<h2>full allocation</h2>
|
||||
<p>When a torrent is started in full allocation mode, the disk-io thread (see <a href="#id264"><span class="problematic" id="id265">threads_</span></a>)
|
||||
<p>When a torrent is started in full allocation mode, the disk-io thread (see <a href="#id262"><span class="problematic" id="id263">threads_</span></a>)
|
||||
will make sure that the entire storage is allocated, and fill any gaps with zeros.
|
||||
This will be skipped if the filesystem supports sparse files or automatic zero filling.
|
||||
It will of course still check for existing pieces and fast resume data. The main
|
||||
@@ -9089,22 +9061,46 @@ The protocols are layered like this:</p>
|
||||
+-----------+-----------+
|
||||
</pre>
|
||||
<p>During the SSL handshake, both peers need to authenticate by providing a certificate
|
||||
that is signed by the private counterpart of the CA certificate found in the
|
||||
.torrent file. These peer certificates are expected to be privided to peers through
|
||||
some other means than bittorrent. Typically by a peer generating a certificate request
|
||||
which is sent to the publisher of the torrent, and the publisher returning a signed
|
||||
certificate.</p>
|
||||
that is signed by the CA certificate found in the .torrent file. These peer
|
||||
certificates are expected to be privided to peers through some other means than
|
||||
bittorrent. Typically by a peer generating a certificate request which is sent to
|
||||
the publisher of the torrent, and the publisher returning a signed certificate.</p>
|
||||
<p>In libtorrent, <a class="reference internal" href="#set-ssl-certificate">set_ssl_certificate()</a> in <a class="reference internal" href="#torrent-handle">torrent_handle</a> is used to tell libtorrent where
|
||||
to find the peer certificate and the private key for it. When an SSL torrent is loaded,
|
||||
the <a class="reference internal" href="#torrent-need-cert-alert">torrent_need_cert_alert</a> is posted to remind the user to provide a certificate.</p>
|
||||
<p>In order for the client to know which torrent an incoming connection belongs to, in order
|
||||
to provide the correct certificate, each SSL torrent opens their own dedicated listen socket.</p>
|
||||
<p>A peer connecting to an SSL torrent MUST provide the <em>SNI</em> TLS extension (server name
|
||||
indication). The server name is the hex encoded info-hash of the torrent to connect to.
|
||||
This is required for the client accepting the connection to know which certificate to
|
||||
present.</p>
|
||||
<p>SSL connections are accepted on a separate socket from normal bittorrent connections. To
|
||||
pick which port the SSL socket should bind to, set <tt class="docutils literal"><span class="pre">session_settings::ssl_listen</span></tt> to a
|
||||
different port. It defaults to port 4433. This setting is only taken into account when the
|
||||
normal listen socket is opened (i.e. just changing this setting won't necessarily close
|
||||
and re-open the SSL socket). To not listen on an SSL socket at all, set <tt class="docutils literal"><span class="pre">ssl_listen</span></tt> to 0.</p>
|
||||
<p>This feature is only available if libtorrent is build with openssl support (<tt class="docutils literal"><span class="pre">TORRENT_USE_OPENSSL</span></tt>).</p>
|
||||
<p>To test incoming SSL connections to an SSL torrent, one can use the following <em>openssl</em> command:</p>
|
||||
<pre class="literal-block">
|
||||
openssl s_client -cert <peer-certificate>.pem -key <peer-private-key>.pem -CAfile <torrent-cert>.pem -debug -connect 127.0.0.1:4433 -tls1 -servername <info-hash>
|
||||
</pre>
|
||||
<p>To create a root certificate, the Distinguished Name (<em>DN</em>) is not taken into account
|
||||
by bittorrent peers. You still need to specify something, but from libtorrent's point of
|
||||
view, it doesn't matter what it is. libtorrent only makes sure the peer certificates are
|
||||
signed by the correct root certificate.</p>
|
||||
<p>One way to create the certificates is to use the <tt class="docutils literal"><span class="pre">CA.sh</span></tt> script that comes with openssl, like thisi (don't forget to enter a common Name for the certificate):</p>
|
||||
<pre class="literal-block">
|
||||
CA.sh -newca
|
||||
CA.sh -newreq
|
||||
CA.sh -sign
|
||||
</pre>
|
||||
<p>The torrent certificate is located in <tt class="docutils literal"><span class="pre">./demoCA/private/demoCA/cacert.pem</span></tt>, this is
|
||||
the pem file to include in the .torrent file.</p>
|
||||
<p>The peer's certificate is located in <tt class="docutils literal"><span class="pre">./newcert.pem</span></tt> and the certificate's
|
||||
private key in <tt class="docutils literal"><span class="pre">./newkey.pem</span></tt>.</p>
|
||||
</div>
|
||||
<div class="system-messages section">
|
||||
<h1>Docutils System Messages</h1>
|
||||
<div class="system-message" id="id264">
|
||||
<p class="system-message-title">System Message: ERROR/3 (<tt class="docutils">manual.rst</tt>, line 8717); <em><a href="#id265">backlink</a></em></p>
|
||||
<div class="system-message" id="id262">
|
||||
<p class="system-message-title">System Message: ERROR/3 (<tt class="docutils">manual.rst</tt>, line 8686); <em><a href="#id263">backlink</a></em></p>
|
||||
Unknown target name: "threads".</div>
|
||||
</div>
|
||||
</div>
|
||||
|
Reference in New Issue
Block a user