fixes in DHT to make it work when the number of transaction slots are full (very rare case). Added a feature to (optionally) resolve the countries of peers and updated the docs (see peer_info::country).

This commit is contained in:
Arvid Norberg
2007-01-29 07:39:33 +00:00
parent c2a032be7a
commit f14c84b01e
26 changed files with 823 additions and 244 deletions

View File

@@ -24,143 +24,144 @@
<div class="contents topic" id="table-of-contents">
<p class="topic-title first"><a name="table-of-contents">Table of contents</a></p>
<ul class="simple">
<li><a class="reference" href="#overview" id="id15" name="id15">overview</a></li>
<li><a class="reference" href="#primitive-network-types" id="id16" name="id16">primitive network types</a></li>
<li><a class="reference" href="#session" id="id17" name="id17">session</a><ul>
<li><a class="reference" href="#id1" id="id18" name="id18">session()</a></li>
<li><a class="reference" href="#id2" id="id19" name="id19">~session()</a></li>
<li><a class="reference" href="#abort" id="id20" name="id20">abort()</a></li>
<li><a class="reference" href="#add-torrent" id="id21" name="id21">add_torrent()</a></li>
<li><a class="reference" href="#remove-torrent-find-torrent-get-torrents" id="id22" name="id22">remove_torrent() find_torrent() get_torrents()</a></li>
<li><a class="reference" href="#set-upload-rate-limit-set-download-rate-limit-upload-rate-limit-download-rate-limit" id="id23" name="id23">set_upload_rate_limit() set_download_rate_limit() upload_rate_limit() download_rate_limit()</a></li>
<li><a class="reference" href="#set-max-uploads-set-max-connections" id="id24" name="id24">set_max_uploads() set_max_connections()</a></li>
<li><a class="reference" href="#num-uploads-num-connections" id="id25" name="id25">num_uploads() num_connections()</a></li>
<li><a class="reference" href="#set-max-half-open-connections" id="id26" name="id26">set_max_half_open_connections()</a></li>
<li><a class="reference" href="#set-ip-filter" id="id27" name="id27">set_ip_filter()</a></li>
<li><a class="reference" href="#status" id="id28" name="id28">status()</a></li>
<li><a class="reference" href="#is-listening-listen-port-listen-on" id="id29" name="id29">is_listening() listen_port() listen_on()</a></li>
<li><a class="reference" href="#pop-alert-set-severity-level" id="id30" name="id30">pop_alert() set_severity_level()</a></li>
<li><a class="reference" href="#add-extension" id="id31" name="id31">add_extension()</a></li>
<li><a class="reference" href="#start-dht-stop-dht-set-dht-settings-dht-state" id="id32" name="id32">start_dht() stop_dht() set_dht_settings() dht_state()</a></li>
<li><a class="reference" href="#add-dht-node-add-dht-router" id="id33" name="id33">add_dht_node() add_dht_router()</a></li>
<li><a class="reference" href="#overview" id="id16" name="id16">overview</a></li>
<li><a class="reference" href="#primitive-network-types" id="id17" name="id17">primitive network types</a></li>
<li><a class="reference" href="#session" id="id18" name="id18">session</a><ul>
<li><a class="reference" href="#id1" id="id19" name="id19">session()</a></li>
<li><a class="reference" href="#id2" id="id20" name="id20">~session()</a></li>
<li><a class="reference" href="#abort" id="id21" name="id21">abort()</a></li>
<li><a class="reference" href="#add-torrent" id="id22" name="id22">add_torrent()</a></li>
<li><a class="reference" href="#remove-torrent-find-torrent-get-torrents" id="id23" name="id23">remove_torrent() find_torrent() get_torrents()</a></li>
<li><a class="reference" href="#set-upload-rate-limit-set-download-rate-limit-upload-rate-limit-download-rate-limit" id="id24" name="id24">set_upload_rate_limit() set_download_rate_limit() upload_rate_limit() download_rate_limit()</a></li>
<li><a class="reference" href="#set-max-uploads-set-max-connections" id="id25" name="id25">set_max_uploads() set_max_connections()</a></li>
<li><a class="reference" href="#num-uploads-num-connections" id="id26" name="id26">num_uploads() num_connections()</a></li>
<li><a class="reference" href="#set-max-half-open-connections" id="id27" name="id27">set_max_half_open_connections()</a></li>
<li><a class="reference" href="#set-ip-filter" id="id28" name="id28">set_ip_filter()</a></li>
<li><a class="reference" href="#status" id="id29" name="id29">status()</a></li>
<li><a class="reference" href="#is-listening-listen-port-listen-on" id="id30" name="id30">is_listening() listen_port() listen_on()</a></li>
<li><a class="reference" href="#pop-alert-set-severity-level" id="id31" name="id31">pop_alert() set_severity_level()</a></li>
<li><a class="reference" href="#add-extension" id="id32" name="id32">add_extension()</a></li>
<li><a class="reference" href="#start-dht-stop-dht-set-dht-settings-dht-state" id="id33" name="id33">start_dht() stop_dht() set_dht_settings() dht_state()</a></li>
<li><a class="reference" href="#add-dht-node-add-dht-router" id="id34" name="id34">add_dht_node() add_dht_router()</a></li>
</ul>
</li>
<li><a class="reference" href="#entry" id="id34" name="id34">entry</a><ul>
<li><a class="reference" href="#integer-string-list-dict-type" id="id35" name="id35">integer() string() list() dict() type()</a></li>
<li><a class="reference" href="#operator" id="id36" name="id36">operator[]</a></li>
<li><a class="reference" href="#find-key" id="id37" name="id37">find_key()</a></li>
<li><a class="reference" href="#entry" id="id35" name="id35">entry</a><ul>
<li><a class="reference" href="#integer-string-list-dict-type" id="id36" name="id36">integer() string() list() dict() type()</a></li>
<li><a class="reference" href="#operator" id="id37" name="id37">operator[]</a></li>
<li><a class="reference" href="#find-key" id="id38" name="id38">find_key()</a></li>
</ul>
</li>
<li><a class="reference" href="#torrent-info" id="id38" name="id38">torrent_info</a><ul>
<li><a class="reference" href="#id3" id="id39" name="id39">torrent_info()</a></li>
<li><a class="reference" href="#set-comment-set-piece-size-set-creator-set-hash-add-tracker-add-file" id="id40" name="id40">set_comment() set_piece_size() set_creator() set_hash() add_tracker() add_file()</a></li>
<li><a class="reference" href="#create-torrent" id="id41" name="id41">create_torrent()</a></li>
<li><a class="reference" href="#begin-files-end-files-rbegin-files-rend-files" id="id42" name="id42">begin_files() end_files() rbegin_files() rend_files()</a></li>
<li><a class="reference" href="#num-files-file-at" id="id43" name="id43">num_files() file_at()</a></li>
<li><a class="reference" href="#map-block" id="id44" name="id44">map_block()</a></li>
<li><a class="reference" href="#map-file" id="id45" name="id45">map_file()</a></li>
<li><a class="reference" href="#url-seeds" id="id46" name="id46">url_seeds()</a></li>
<li><a class="reference" href="#print" id="id47" name="id47">print()</a></li>
<li><a class="reference" href="#trackers" id="id48" name="id48">trackers()</a></li>
<li><a class="reference" href="#total-size-piece-length-piece-size-num-pieces" id="id49" name="id49">total_size() piece_length() piece_size() num_pieces()</a></li>
<li><a class="reference" href="#hash-for-piece-info-hash" id="id50" name="id50">hash_for_piece() info_hash()</a></li>
<li><a class="reference" href="#name-comment-creation-date-creator" id="id51" name="id51">name() comment() creation_date() creator()</a></li>
<li><a class="reference" href="#priv-set-priv" id="id52" name="id52">priv() set_priv()</a></li>
<li><a class="reference" href="#nodes" id="id53" name="id53">nodes()</a></li>
<li><a class="reference" href="#add-node" id="id54" name="id54">add_node()</a></li>
<li><a class="reference" href="#torrent-info" id="id39" name="id39">torrent_info</a><ul>
<li><a class="reference" href="#id3" id="id40" name="id40">torrent_info()</a></li>
<li><a class="reference" href="#set-comment-set-piece-size-set-creator-set-hash-add-tracker-add-file" id="id41" name="id41">set_comment() set_piece_size() set_creator() set_hash() add_tracker() add_file()</a></li>
<li><a class="reference" href="#create-torrent" id="id42" name="id42">create_torrent()</a></li>
<li><a class="reference" href="#begin-files-end-files-rbegin-files-rend-files" id="id43" name="id43">begin_files() end_files() rbegin_files() rend_files()</a></li>
<li><a class="reference" href="#num-files-file-at" id="id44" name="id44">num_files() file_at()</a></li>
<li><a class="reference" href="#map-block" id="id45" name="id45">map_block()</a></li>
<li><a class="reference" href="#map-file" id="id46" name="id46">map_file()</a></li>
<li><a class="reference" href="#url-seeds" id="id47" name="id47">url_seeds()</a></li>
<li><a class="reference" href="#print" id="id48" name="id48">print()</a></li>
<li><a class="reference" href="#trackers" id="id49" name="id49">trackers()</a></li>
<li><a class="reference" href="#total-size-piece-length-piece-size-num-pieces" id="id50" name="id50">total_size() piece_length() piece_size() num_pieces()</a></li>
<li><a class="reference" href="#hash-for-piece-info-hash" id="id51" name="id51">hash_for_piece() info_hash()</a></li>
<li><a class="reference" href="#name-comment-creation-date-creator" id="id52" name="id52">name() comment() creation_date() creator()</a></li>
<li><a class="reference" href="#priv-set-priv" id="id53" name="id53">priv() set_priv()</a></li>
<li><a class="reference" href="#nodes" id="id54" name="id54">nodes()</a></li>
<li><a class="reference" href="#add-node" id="id55" name="id55">add_node()</a></li>
</ul>
</li>
<li><a class="reference" href="#torrent-handle" id="id55" name="id55">torrent_handle</a><ul>
<li><a class="reference" href="#file-progress" id="id56" name="id56">file_progress()</a></li>
<li><a class="reference" href="#save-path" id="id57" name="id57">save_path()</a></li>
<li><a class="reference" href="#move-storage" id="id58" name="id58">move_storage()</a></li>
<li><a class="reference" href="#force-reannounce" id="id59" name="id59">force_reannounce()</a></li>
<li><a class="reference" href="#connect-peer" id="id60" name="id60">connect_peer()</a></li>
<li><a class="reference" href="#name" id="id61" name="id61">name()</a></li>
<li><a class="reference" href="#set-ratio" id="id62" name="id62">set_ratio()</a></li>
<li><a class="reference" href="#set-upload-limit-set-download-limit" id="id63" name="id63">set_upload_limit() set_download_limit()</a></li>
<li><a class="reference" href="#set-sequenced-download-threshold" id="id64" name="id64">set_sequenced_download_threshold()</a></li>
<li><a class="reference" href="#set-peer-upload-limit-set-peer-download-limit" id="id65" name="id65">set_peer_upload_limit() set_peer_download_limit()</a></li>
<li><a class="reference" href="#pause-resume-is-paused" id="id66" name="id66">pause() resume() is_paused()</a></li>
<li><a class="reference" href="#is-seed" id="id67" name="id67">is_seed()</a></li>
<li><a class="reference" href="#has-metadata" id="id68" name="id68">has_metadata()</a></li>
<li><a class="reference" href="#set-tracker-login" id="id69" name="id69">set_tracker_login()</a></li>
<li><a class="reference" href="#trackers-replace-trackers" id="id70" name="id70">trackers() replace_trackers()</a></li>
<li><a class="reference" href="#add-url-seed" id="id71" name="id71">add_url_seed()</a></li>
<li><a class="reference" href="#use-interface" id="id72" name="id72">use_interface()</a></li>
<li><a class="reference" href="#info-hash" id="id73" name="id73">info_hash()</a></li>
<li><a class="reference" href="#id5" id="id74" name="id74">set_max_uploads() set_max_connections()</a></li>
<li><a class="reference" href="#write-resume-data" id="id75" name="id75">write_resume_data()</a></li>
<li><a class="reference" href="#id6" id="id76" name="id76">status()</a></li>
<li><a class="reference" href="#get-download-queue" id="id77" name="id77">get_download_queue()</a></li>
<li><a class="reference" href="#get-peer-info" id="id78" name="id78">get_peer_info()</a></li>
<li><a class="reference" href="#get-torrent-info" id="id79" name="id79">get_torrent_info()</a></li>
<li><a class="reference" href="#is-valid" id="id80" name="id80">is_valid()</a></li>
<li><a class="reference" href="#torrent-handle" id="id56" name="id56">torrent_handle</a><ul>
<li><a class="reference" href="#file-progress" id="id57" name="id57">file_progress()</a></li>
<li><a class="reference" href="#save-path" id="id58" name="id58">save_path()</a></li>
<li><a class="reference" href="#move-storage" id="id59" name="id59">move_storage()</a></li>
<li><a class="reference" href="#force-reannounce" id="id60" name="id60">force_reannounce()</a></li>
<li><a class="reference" href="#connect-peer" id="id61" name="id61">connect_peer()</a></li>
<li><a class="reference" href="#name" id="id62" name="id62">name()</a></li>
<li><a class="reference" href="#set-ratio" id="id63" name="id63">set_ratio()</a></li>
<li><a class="reference" href="#set-upload-limit-set-download-limit" id="id64" name="id64">set_upload_limit() set_download_limit()</a></li>
<li><a class="reference" href="#set-sequenced-download-threshold" id="id65" name="id65">set_sequenced_download_threshold()</a></li>
<li><a class="reference" href="#set-peer-upload-limit-set-peer-download-limit" id="id66" name="id66">set_peer_upload_limit() set_peer_download_limit()</a></li>
<li><a class="reference" href="#pause-resume-is-paused" id="id67" name="id67">pause() resume() is_paused()</a></li>
<li><a class="reference" href="#resolve-countries" id="id68" name="id68">resolve_countries()</a></li>
<li><a class="reference" href="#is-seed" id="id69" name="id69">is_seed()</a></li>
<li><a class="reference" href="#has-metadata" id="id70" name="id70">has_metadata()</a></li>
<li><a class="reference" href="#set-tracker-login" id="id71" name="id71">set_tracker_login()</a></li>
<li><a class="reference" href="#trackers-replace-trackers" id="id72" name="id72">trackers() replace_trackers()</a></li>
<li><a class="reference" href="#add-url-seed" id="id73" name="id73">add_url_seed()</a></li>
<li><a class="reference" href="#use-interface" id="id74" name="id74">use_interface()</a></li>
<li><a class="reference" href="#info-hash" id="id75" name="id75">info_hash()</a></li>
<li><a class="reference" href="#id5" id="id76" name="id76">set_max_uploads() set_max_connections()</a></li>
<li><a class="reference" href="#write-resume-data" id="id77" name="id77">write_resume_data()</a></li>
<li><a class="reference" href="#id6" id="id78" name="id78">status()</a></li>
<li><a class="reference" href="#get-download-queue" id="id79" name="id79">get_download_queue()</a></li>
<li><a class="reference" href="#get-peer-info" id="id80" name="id80">get_peer_info()</a></li>
<li><a class="reference" href="#get-torrent-info" id="id81" name="id81">get_torrent_info()</a></li>
<li><a class="reference" href="#is-valid" id="id82" name="id82">is_valid()</a></li>
</ul>
</li>
<li><a class="reference" href="#torrent-status" id="id81" name="id81">torrent_status</a></li>
<li><a class="reference" href="#peer-info" id="id82" name="id82">peer_info</a></li>
<li><a class="reference" href="#session-settings" id="id83" name="id83">session_settings</a></li>
<li><a class="reference" href="#ip-filter" id="id84" name="id84">ip_filter</a><ul>
<li><a class="reference" href="#id8" id="id85" name="id85">ip_filter()</a></li>
<li><a class="reference" href="#add-rule" id="id86" name="id86">add_rule()</a></li>
<li><a class="reference" href="#access" id="id87" name="id87">access()</a></li>
<li><a class="reference" href="#export-filter" id="id88" name="id88">export_filter()</a></li>
<li><a class="reference" href="#torrent-status" id="id83" name="id83">torrent_status</a></li>
<li><a class="reference" href="#peer-info" id="id84" name="id84">peer_info</a></li>
<li><a class="reference" href="#session-settings" id="id85" name="id85">session_settings</a></li>
<li><a class="reference" href="#ip-filter" id="id86" name="id86">ip_filter</a><ul>
<li><a class="reference" href="#id9" id="id87" name="id87">ip_filter()</a></li>
<li><a class="reference" href="#add-rule" id="id88" name="id88">add_rule()</a></li>
<li><a class="reference" href="#access" id="id89" name="id89">access()</a></li>
<li><a class="reference" href="#export-filter" id="id90" name="id90">export_filter()</a></li>
</ul>
</li>
<li><a class="reference" href="#big-number" id="id89" name="id89">big_number</a></li>
<li><a class="reference" href="#hasher" id="id90" name="id90">hasher</a></li>
<li><a class="reference" href="#fingerprint" id="id91" name="id91">fingerprint</a></li>
<li><a class="reference" href="#free-functions" id="id92" name="id92">free functions</a><ul>
<li><a class="reference" href="#identify-client" id="id93" name="id93">identify_client()</a></li>
<li><a class="reference" href="#client-fingerprint" id="id94" name="id94">client_fingerprint()</a></li>
<li><a class="reference" href="#bdecode-bencode" id="id95" name="id95">bdecode() bencode()</a></li>
<li><a class="reference" href="#big-number" id="id91" name="id91">big_number</a></li>
<li><a class="reference" href="#hasher" id="id92" name="id92">hasher</a></li>
<li><a class="reference" href="#fingerprint" id="id93" name="id93">fingerprint</a></li>
<li><a class="reference" href="#free-functions" id="id94" name="id94">free functions</a><ul>
<li><a class="reference" href="#identify-client" id="id95" name="id95">identify_client()</a></li>
<li><a class="reference" href="#client-fingerprint" id="id96" name="id96">client_fingerprint()</a></li>
<li><a class="reference" href="#bdecode-bencode" id="id97" name="id97">bdecode() bencode()</a></li>
</ul>
</li>
<li><a class="reference" href="#alerts" id="id96" name="id96">alerts</a><ul>
<li><a class="reference" href="#listen-failed-alert" id="id97" name="id97">listen_failed_alert</a></li>
<li><a class="reference" href="#file-error-alert" id="id98" name="id98">file_error_alert</a></li>
<li><a class="reference" href="#tracker-announce-alert" id="id99" name="id99">tracker_announce_alert</a></li>
<li><a class="reference" href="#tracker-alert" id="id100" name="id100">tracker_alert</a></li>
<li><a class="reference" href="#tracker-reply-alert" id="id101" name="id101">tracker_reply_alert</a></li>
<li><a class="reference" href="#tracker-warning-alert" id="id102" name="id102">tracker_warning_alert</a></li>
<li><a class="reference" href="#url-seed-alert" id="id103" name="id103">url_seed_alert</a></li>
<li><a class="reference" href="#hash-failed-alert" id="id104" name="id104">hash_failed_alert</a></li>
<li><a class="reference" href="#peer-ban-alert" id="id105" name="id105">peer_ban_alert</a></li>
<li><a class="reference" href="#peer-error-alert" id="id106" name="id106">peer_error_alert</a></li>
<li><a class="reference" href="#invalid-request-alert" id="id107" name="id107">invalid_request_alert</a></li>
<li><a class="reference" href="#torrent-finished-alert" id="id108" name="id108">torrent_finished_alert</a></li>
<li><a class="reference" href="#metadata-failed-alert" id="id109" name="id109">metadata_failed_alert</a></li>
<li><a class="reference" href="#metadata-received-alert" id="id110" name="id110">metadata_received_alert</a></li>
<li><a class="reference" href="#fastresume-rejected-alert" id="id111" name="id111">fastresume_rejected_alert</a></li>
<li><a class="reference" href="#dispatcher" id="id112" name="id112">dispatcher</a></li>
<li><a class="reference" href="#alerts" id="id98" name="id98">alerts</a><ul>
<li><a class="reference" href="#listen-failed-alert" id="id99" name="id99">listen_failed_alert</a></li>
<li><a class="reference" href="#file-error-alert" id="id100" name="id100">file_error_alert</a></li>
<li><a class="reference" href="#tracker-announce-alert" id="id101" name="id101">tracker_announce_alert</a></li>
<li><a class="reference" href="#tracker-alert" id="id102" name="id102">tracker_alert</a></li>
<li><a class="reference" href="#tracker-reply-alert" id="id103" name="id103">tracker_reply_alert</a></li>
<li><a class="reference" href="#tracker-warning-alert" id="id104" name="id104">tracker_warning_alert</a></li>
<li><a class="reference" href="#url-seed-alert" id="id105" name="id105">url_seed_alert</a></li>
<li><a class="reference" href="#hash-failed-alert" id="id106" name="id106">hash_failed_alert</a></li>
<li><a class="reference" href="#peer-ban-alert" id="id107" name="id107">peer_ban_alert</a></li>
<li><a class="reference" href="#peer-error-alert" id="id108" name="id108">peer_error_alert</a></li>
<li><a class="reference" href="#invalid-request-alert" id="id109" name="id109">invalid_request_alert</a></li>
<li><a class="reference" href="#torrent-finished-alert" id="id110" name="id110">torrent_finished_alert</a></li>
<li><a class="reference" href="#metadata-failed-alert" id="id111" name="id111">metadata_failed_alert</a></li>
<li><a class="reference" href="#metadata-received-alert" id="id112" name="id112">metadata_received_alert</a></li>
<li><a class="reference" href="#fastresume-rejected-alert" id="id113" name="id113">fastresume_rejected_alert</a></li>
<li><a class="reference" href="#dispatcher" id="id114" name="id114">dispatcher</a></li>
</ul>
</li>
<li><a class="reference" href="#exceptions" id="id113" name="id113">exceptions</a><ul>
<li><a class="reference" href="#invalid-handle" id="id114" name="id114">invalid_handle</a></li>
<li><a class="reference" href="#duplicate-torrent" id="id115" name="id115">duplicate_torrent</a></li>
<li><a class="reference" href="#invalid-encoding" id="id116" name="id116">invalid_encoding</a></li>
<li><a class="reference" href="#type-error" id="id117" name="id117">type_error</a></li>
<li><a class="reference" href="#invalid-torrent-file" id="id118" name="id118">invalid_torrent_file</a></li>
<li><a class="reference" href="#exceptions" id="id115" name="id115">exceptions</a><ul>
<li><a class="reference" href="#invalid-handle" id="id116" name="id116">invalid_handle</a></li>
<li><a class="reference" href="#duplicate-torrent" id="id117" name="id117">duplicate_torrent</a></li>
<li><a class="reference" href="#invalid-encoding" id="id118" name="id118">invalid_encoding</a></li>
<li><a class="reference" href="#type-error" id="id119" name="id119">type_error</a></li>
<li><a class="reference" href="#invalid-torrent-file" id="id120" name="id120">invalid_torrent_file</a></li>
</ul>
</li>
<li><a class="reference" href="#fast-resume" id="id119" name="id119">fast resume</a><ul>
<li><a class="reference" href="#file-format" id="id120" name="id120">file format</a></li>
<li><a class="reference" href="#fast-resume" id="id121" name="id121">fast resume</a><ul>
<li><a class="reference" href="#file-format" id="id122" name="id122">file format</a></li>
</ul>
</li>
<li><a class="reference" href="#threads" id="id121" name="id121">threads</a></li>
<li><a class="reference" href="#storage-allocation" id="id122" name="id122">storage allocation</a><ul>
<li><a class="reference" href="#full-allocation" id="id123" name="id123">full allocation</a></li>
<li><a class="reference" href="#compact-allocation" id="id124" name="id124">compact allocation</a></li>
<li><a class="reference" href="#threads" id="id123" name="id123">threads</a></li>
<li><a class="reference" href="#storage-allocation" id="id124" name="id124">storage allocation</a><ul>
<li><a class="reference" href="#full-allocation" id="id125" name="id125">full allocation</a></li>
<li><a class="reference" href="#compact-allocation" id="id126" name="id126">compact allocation</a></li>
</ul>
</li>
<li><a class="reference" href="#extensions" id="id125" name="id125">extensions</a><ul>
<li><a class="reference" href="#metadata-from-peers" id="id126" name="id126">metadata from peers</a></li>
<li><a class="reference" href="#http-seeding" id="id127" name="id127">HTTP seeding</a></li>
<li><a class="reference" href="#extensions" id="id127" name="id127">extensions</a><ul>
<li><a class="reference" href="#metadata-from-peers" id="id128" name="id128">metadata from peers</a></li>
<li><a class="reference" href="#http-seeding" id="id129" name="id129">HTTP seeding</a></li>
</ul>
</li>
<li><a class="reference" href="#filename-checks" id="id128" name="id128">filename checks</a></li>
<li><a class="reference" href="#acknowledgments" id="id129" name="id129">acknowledgments</a></li>
<li><a class="reference" href="#filename-checks" id="id130" name="id130">filename checks</a></li>
<li><a class="reference" href="#acknowledgments" id="id131" name="id131">acknowledgments</a></li>
</ul>
</div>
<div class="section">
@@ -1247,6 +1248,9 @@ struct torrent_handle
bool is_paused() const;
bool is_seed() const;
void resolve_countries(bool r);
bool resolve_countries() const;
void filter_piece(int index, bool filter) const;
void filter_pieces(std::vector&lt;bool&gt; const&amp; bitmask) const;
bool is_piece_filtered(int index) const;
@@ -1423,6 +1427,19 @@ is currently paused. Torrents may be paused automatically if there is a file err
or something similar. See <a class="reference" href="#file-error-alert">file_error_alert</a>.</p>
</div>
<div class="section">
<h2><a id="resolve-countries" name="resolve-countries">resolve_countries()</a></h2>
<blockquote>
<pre class="literal-block">
void resolve_countries(bool r);
bool resolve_countries() const;
</pre>
</blockquote>
<p>Sets or gets the flag that derermines if countries should be resolved for the peers of this
torrent. It defaults to false. If it is set to true, the <a class="reference" href="#peer-info">peer_info</a> structure for the peers
in this torrent will have their <tt class="docutils literal"><span class="pre">country</span></tt> member set. See <a class="reference" href="#peer-info">peer_info</a> for more information
on how to interpret this field.</p>
</div>
<div class="section">
<h2><a id="is-seed" name="is-seed">is_seed()</a></h2>
<blockquote>
<pre class="literal-block">
@@ -1837,6 +1854,8 @@ struct peer_info
int upload_limit;
int download_limit;
char country[2];
size_type load_balancing;
int download_queue_length;
@@ -1925,6 +1944,12 @@ peer every second. It may be -1 if there's no local limit on the peer. The globa
limit and the torrent limit is always enforced anyway.</p>
<p><tt class="docutils literal"><span class="pre">download_limit</span></tt> is the number of bytes per second this peer is allowed to
receive. -1 means it's unlimited.</p>
<p><tt class="docutils literal"><span class="pre">country</span></tt> is the two letter <a class="reference" href="http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html">ISO 3166 country code</a> for the country the peer
is connected from. If the country hasn't been resolved yet, both chars are set
to 0. If the resolution failed for some reason, the field is set to &quot;--&quot;. If the
resolution service returns an invalid country code, it is set to &quot;!!&quot;.
The <tt class="docutils literal"><span class="pre">countries.nerd.dk</span></tt> service is used to look up countries. This field will
remain set to 0 unless the torrent is set to resolve countries, see <a class="reference" href="#resolve-countries">resolve_countries()</a>.</p>
<p><tt class="docutils literal"><span class="pre">load_balancing</span></tt> is a measurement of the balancing of free download (that we get)
and free upload that we give. Every peer gets a certain amount of free upload, but
this member says how much <em>extra</em> free upload this peer has got. If it is a negative
@@ -2088,7 +2113,7 @@ public:
</pre>
</blockquote>
<div class="section">
<h2><a id="id8" name="id8">ip_filter()</a></h2>
<h2><a id="id9" name="id9">ip_filter()</a></h2>
<blockquote>
<pre class="literal-block">
ip_filter()
@@ -2975,25 +3000,6 @@ length-prefix, message-id nor extension-id).</p>
handshake, it may be incompatible with future versions of the mainline
bittorrent client.</p>
<p>These are the extensions that are currently implemented.</p>
<!-- chat messages
- - - - - - - - - - - - -
Extension name: "chat"
The payload in the packet is a bencoded dictionary with any
combination of the following entries:
+- - - - - - - - - -+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+
| "msg" | This is a string that contains a message that |
| | should be displayed to the user. |
+- - - - - - - - - -+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+
| "ctrl" | This is a control string that can tell a client that |
| | it is ignored (to make the user aware of that) and |
| | it can also tell a client that it is no longer ignored.|
| | These notifications are encoded as the strings: |
| | "ignored" and "not ignored". |
| | Any unrecognized strings should be ignored. |
+- - - - - - - - - -+- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -+ -->
<div class="section">
<h2><a id="metadata-from-peers" name="metadata-from-peers">metadata from peers</a></h2>
<p>Extension name: &quot;LT_metadata&quot;</p>

View File

@@ -1194,6 +1194,9 @@ Its declaration looks like this::
bool is_paused() const;
bool is_seed() const;
void resolve_countries(bool r);
bool resolve_countries() const;
void filter_piece(int index, bool filter) const;
void filter_pieces(std::vector<bool> const& bitmask) const;
bool is_piece_filtered(int index) const;
@@ -1379,6 +1382,19 @@ all potential (not connected) peers. You can use ``is_paused()`` to determine if
is currently paused. Torrents may be paused automatically if there is a file error (e.g. disk full)
or something similar. See file_error_alert_.
resolve_countries()
-------------------
::
void resolve_countries(bool r);
bool resolve_countries() const;
Sets or gets the flag that derermines if countries should be resolved for the peers of this
torrent. It defaults to false. If it is set to true, the peer_info_ structure for the peers
in this torrent will have their ``country`` member set. See peer_info_ for more information
on how to interpret this field.
is_seed()
---------
@@ -1820,6 +1836,8 @@ It contains the following fields::
int upload_limit;
int download_limit;
char country[2];
size_type load_balancing;
int download_queue_length;
@@ -1906,6 +1924,15 @@ limit and the torrent limit is always enforced anyway.
``download_limit`` is the number of bytes per second this peer is allowed to
receive. -1 means it's unlimited.
``country`` is the two letter `ISO 3166 country code`__ for the country the peer
is connected from. If the country hasn't been resolved yet, both chars are set
to 0. If the resolution failed for some reason, the field is set to "--". If the
resolution service returns an invalid country code, it is set to "!!".
The ``countries.nerd.dk`` service is used to look up countries. This field will
remain set to 0 unless the torrent is set to resolve countries, see `resolve_countries()`_.
__ http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html
``load_balancing`` is a measurement of the balancing of free download (that we get)
and free upload that we give. Every peer gets a certain amount of free upload, but
this member says how much *extra* free upload this peer has got. If it is a negative
@@ -3066,26 +3093,6 @@ bittorrent client.
These are the extensions that are currently implemented.
.. chat messages
-------------
Extension name: "chat"
The payload in the packet is a bencoded dictionary with any
combination of the following entries:
+----------+--------------------------------------------------------+
| "msg" | This is a string that contains a message that |
| | should be displayed to the user. |
+----------+--------------------------------------------------------+
| "ctrl" | This is a control string that can tell a client that |
| | it is ignored (to make the user aware of that) and |
| | it can also tell a client that it is no longer ignored.|
| | These notifications are encoded as the strings: |
| | "ignored" and "not ignored". |
| | Any unrecognized strings should be ignored. |
+----------+--------------------------------------------------------+
metadata from peers
-------------------