landed ssl branch back into trunk

This commit is contained in:
Arvid Norberg
2012-01-14 16:04:25 +00:00
parent cbe02221cd
commit 4a40e68a82
20 changed files with 737 additions and 565 deletions

View File

@@ -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&amp; url);
std::set&lt;std::string&gt; 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&amp; ec)
static const char const* swedish[] =
{
&quot;inget fel&quot;,
&quot;en fil i torrenten kolliderar med en fil frÂn en annan torrent&quot;,
&quot;en fil i torrenten kolliderar med en fil från en annan torrent&quot;,
&quot;hash check misslyckades&quot;,
&quot;torrent filen r inte en dictionary&quot;,
&quot;'info'-nyckeln saknas eller r korrupt i torrentfilen&quot;,
&quot;'info'-fltet r inte en dictionary&quot;,
&quot;'piece length' fltet saknas eller r korrupt i torrentfilen&quot;,
&quot;torrentfilen saknar namnfltet&quot;,
&quot;torrent filen är inte en dictionary&quot;,
&quot;'info'-nyckeln saknas eller är korrupt i torrentfilen&quot;,
&quot;'info'-fältet är inte en dictionary&quot;,
&quot;'piece length' fältet saknas eller är korrupt i torrentfilen&quot;,
&quot;torrentfilen saknar namnfältet&quot;,
&quot;ogiltigt namn i torrentfilen (kan vara en attack)&quot;,
// ... 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 &lt;peer-certificate&gt;.pem -key &lt;peer-private-key&gt;.pem -CAfile &lt;torrent-cert&gt;.pem -debug -connect 127.0.0.1:4433 -tls1 -servername &lt;info-hash&gt;
</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: &quot;threads&quot;.</div>
</div>
</div>