fixed race condition in peer_connection, fixed assert in torrent destructor, updated tests

This commit is contained in:
Arvid Norberg
2006-05-28 19:03:54 +00:00
parent 58698d6aea
commit 94628fa78d
20 changed files with 521 additions and 322 deletions

View File

@@ -142,148 +142,148 @@ div.warning, div.note, div.important {
<div class="contents topic">
<p class="topic-title first"><a id="table-of-contents" name="table-of-contents">Table of contents</a></p>
<ul class="simple">
<li><a class="reference" href="#introduction" id="id24" name="id24">introduction</a></li>
<li><a class="reference" href="#downloading-and-building" id="id25" name="id25">downloading and building</a><ul>
<li><a class="reference" href="#building-with-bbv2" id="id26" name="id26">building with BBv2</a></li>
<li><a class="reference" href="#building-with-autotools" id="id27" name="id27">building with autotools</a></li>
<li><a class="reference" href="#building-with-other-build-systems" id="id28" name="id28">building with other build systems</a></li>
<li><a class="reference" href="#build-configurations" id="id29" name="id29">build configurations</a></li>
<li><a class="reference" href="#introduction" id="id25" name="id25">introduction</a></li>
<li><a class="reference" href="#downloading-and-building" id="id26" name="id26">downloading and building</a><ul>
<li><a class="reference" href="#building-with-bbv2" id="id27" name="id27">building with BBv2</a></li>
<li><a class="reference" href="#building-with-autotools" id="id28" name="id28">building with autotools</a></li>
<li><a class="reference" href="#building-with-other-build-systems" id="id29" name="id29">building with other build systems</a></li>
<li><a class="reference" href="#build-configurations" id="id30" name="id30">build configurations</a></li>
</ul>
</li>
<li><a class="reference" href="#overview" id="id30" name="id30">overview</a></li>
<li><a class="reference" href="#session" id="id31" name="id31">session</a><ul>
<li><a class="reference" href="#id8" id="id32" name="id32">session()</a></li>
<li><a class="reference" href="#id9" id="id33" name="id33">~session()</a></li>
<li><a class="reference" href="#add-torrent" id="id34" name="id34">add_torrent()</a></li>
<li><a class="reference" href="#remove-torrent" id="id35" name="id35">remove_torrent()</a></li>
<li><a class="reference" href="#disable-extensions-enable-extension" id="id36" name="id36">disable_extensions() enable_extension()</a></li>
<li><a class="reference" href="#set-upload-rate-limit-set-download-rate-limit" id="id37" name="id37">set_upload_rate_limit() set_download_rate_limit()</a></li>
<li><a class="reference" href="#set-max-uploads-set-max-connections" id="id38" name="id38">set_max_uploads() set_max_connections()</a></li>
<li><a class="reference" href="#set-max-half-open-connections" id="id39" name="id39">set_max_half_open_connections()</a></li>
<li><a class="reference" href="#set-ip-filter" id="id40" name="id40">set_ip_filter()</a></li>
<li><a class="reference" href="#status" id="id41" name="id41">status()</a></li>
<li><a class="reference" href="#is-listening-listen-port-listen-on" id="id42" name="id42">is_listening() listen_port() listen_on()</a></li>
<li><a class="reference" href="#pop-alert-set-severity-level" id="id43" name="id43">pop_alert() set_severity_level()</a></li>
<li><a class="reference" href="#overview" id="id31" name="id31">overview</a></li>
<li><a class="reference" href="#session" id="id32" name="id32">session</a><ul>
<li><a class="reference" href="#id9" id="id33" name="id33">session()</a></li>
<li><a class="reference" href="#id10" id="id34" name="id34">~session()</a></li>
<li><a class="reference" href="#add-torrent" id="id35" name="id35">add_torrent()</a></li>
<li><a class="reference" href="#remove-torrent" id="id36" name="id36">remove_torrent()</a></li>
<li><a class="reference" href="#disable-extensions-enable-extension" id="id37" name="id37">disable_extensions() enable_extension()</a></li>
<li><a class="reference" href="#set-upload-rate-limit-set-download-rate-limit" id="id38" name="id38">set_upload_rate_limit() set_download_rate_limit()</a></li>
<li><a class="reference" href="#set-max-uploads-set-max-connections" id="id39" name="id39">set_max_uploads() set_max_connections()</a></li>
<li><a class="reference" href="#set-max-half-open-connections" id="id40" name="id40">set_max_half_open_connections()</a></li>
<li><a class="reference" href="#set-ip-filter" id="id41" name="id41">set_ip_filter()</a></li>
<li><a class="reference" href="#status" id="id42" name="id42">status()</a></li>
<li><a class="reference" href="#is-listening-listen-port-listen-on" id="id43" name="id43">is_listening() listen_port() listen_on()</a></li>
<li><a class="reference" href="#pop-alert-set-severity-level" id="id44" name="id44">pop_alert() set_severity_level()</a></li>
</ul>
</li>
<li><a class="reference" href="#entry" id="id44" name="id44">entry</a><ul>
<li><a class="reference" href="#integer-string-list-dict-type" id="id45" name="id45">integer() string() list() dict() type()</a></li>
<li><a class="reference" href="#operator" id="id46" name="id46">operator[]</a></li>
<li><a class="reference" href="#find-key" id="id47" name="id47">find_key()</a></li>
<li><a class="reference" href="#entry" id="id45" name="id45">entry</a><ul>
<li><a class="reference" href="#integer-string-list-dict-type" id="id46" name="id46">integer() string() list() dict() type()</a></li>
<li><a class="reference" href="#operator" id="id47" name="id47">operator[]</a></li>
<li><a class="reference" href="#find-key" id="id48" name="id48">find_key()</a></li>
</ul>
</li>
<li><a class="reference" href="#torrent-info" id="id48" name="id48">torrent_info</a><ul>
<li><a class="reference" href="#id10" id="id49" name="id49">torrent_info()</a></li>
<li><a class="reference" href="#set-comment-set-piece-size-set-creator-set-hash-add-tracker-add-file" id="id50" name="id50">set_comment() set_piece_size() set_creator() set_hash() add_tracker() add_file()</a></li>
<li><a class="reference" href="#create-torrent" id="id51" name="id51">create_torrent()</a></li>
<li><a class="reference" href="#begin-files-end-files-rbegin-files-rend-files" id="id52" name="id52">begin_files() end_files() rbegin_files() rend_files()</a></li>
<li><a class="reference" href="#num-files-file-at" id="id53" name="id53">num_files() file_at()</a></li>
<li><a class="reference" href="#map-block" id="id54" name="id54">map_block()</a></li>
<li><a class="reference" href="#map-file" id="id55" name="id55">map_file()</a></li>
<li><a class="reference" href="#url-seeds" id="id56" name="id56">url_seeds()</a></li>
<li><a class="reference" href="#print" id="id57" name="id57">print()</a></li>
<li><a class="reference" href="#trackers" id="id58" name="id58">trackers()</a></li>
<li><a class="reference" href="#total-size-piece-length-piece-size-num-pieces" id="id59" name="id59">total_size() piece_length() piece_size() num_pieces()</a></li>
<li><a class="reference" href="#hash-for-piece-info-hash" id="id60" name="id60">hash_for_piece() info_hash()</a></li>
<li><a class="reference" href="#name-comment-creation-date-creator" id="id61" name="id61">name() comment() creation_date() creator()</a></li>
<li><a class="reference" href="#torrent-info" id="id49" name="id49">torrent_info</a><ul>
<li><a class="reference" href="#id11" id="id50" name="id50">torrent_info()</a></li>
<li><a class="reference" href="#set-comment-set-piece-size-set-creator-set-hash-add-tracker-add-file" id="id51" name="id51">set_comment() set_piece_size() set_creator() set_hash() add_tracker() add_file()</a></li>
<li><a class="reference" href="#create-torrent" id="id52" name="id52">create_torrent()</a></li>
<li><a class="reference" href="#begin-files-end-files-rbegin-files-rend-files" id="id53" name="id53">begin_files() end_files() rbegin_files() rend_files()</a></li>
<li><a class="reference" href="#num-files-file-at" id="id54" name="id54">num_files() file_at()</a></li>
<li><a class="reference" href="#map-block" id="id55" name="id55">map_block()</a></li>
<li><a class="reference" href="#map-file" id="id56" name="id56">map_file()</a></li>
<li><a class="reference" href="#url-seeds" id="id57" name="id57">url_seeds()</a></li>
<li><a class="reference" href="#print" id="id58" name="id58">print()</a></li>
<li><a class="reference" href="#trackers" id="id59" name="id59">trackers()</a></li>
<li><a class="reference" href="#total-size-piece-length-piece-size-num-pieces" id="id60" name="id60">total_size() piece_length() piece_size() num_pieces()</a></li>
<li><a class="reference" href="#hash-for-piece-info-hash" id="id61" name="id61">hash_for_piece() info_hash()</a></li>
<li><a class="reference" href="#name-comment-creation-date-creator" id="id62" name="id62">name() comment() creation_date() creator()</a></li>
</ul>
</li>
<li><a class="reference" href="#torrent-handle" id="id62" name="id62">torrent_handle</a><ul>
<li><a class="reference" href="#save-path" id="id63" name="id63">save_path()</a></li>
<li><a class="reference" href="#move-storage" id="id64" name="id64">move_storage()</a></li>
<li><a class="reference" href="#force-reannounce" id="id65" name="id65">force_reannounce()</a></li>
<li><a class="reference" href="#connect-peer" id="id66" name="id66">connect_peer()</a></li>
<li><a class="reference" href="#set-ratio" id="id67" name="id67">set_ratio()</a></li>
<li><a class="reference" href="#set-upload-limit-set-download-limit" id="id68" name="id68">set_upload_limit() set_download_limit()</a></li>
<li><a class="reference" href="#set-peer-upload-limit-set-peer-download-limit" id="id69" name="id69">set_peer_upload_limit() set_peer_download_limit()</a></li>
<li><a class="reference" href="#pause-resume-is-paused" id="id70" name="id70">pause() resume() is_paused()</a></li>
<li><a class="reference" href="#is-seed" id="id71" name="id71">is_seed()</a></li>
<li><a class="reference" href="#has-metadata" id="id72" name="id72">has_metadata()</a></li>
<li><a class="reference" href="#set-tracker-login" id="id73" name="id73">set_tracker_login()</a></li>
<li><a class="reference" href="#trackers-replace-trackers" id="id74" name="id74">trackers() replace_trackers()</a></li>
<li><a class="reference" href="#add-url-seed" id="id75" name="id75">add_url_seed()</a></li>
<li><a class="reference" href="#use-interface" id="id76" name="id76">use_interface()</a></li>
<li><a class="reference" href="#info-hash" id="id77" name="id77">info_hash()</a></li>
<li><a class="reference" href="#id12" id="id78" name="id78">set_max_uploads() set_max_connections()</a></li>
<li><a class="reference" href="#write-resume-data" id="id79" name="id79">write_resume_data()</a></li>
<li><a class="reference" href="#metadata" id="id80" name="id80">metadata()</a></li>
<li><a class="reference" href="#id13" id="id81" name="id81">status()</a></li>
<li><a class="reference" href="#get-download-queue" id="id82" name="id82">get_download_queue()</a></li>
<li><a class="reference" href="#get-peer-info" id="id83" name="id83">get_peer_info()</a></li>
<li><a class="reference" href="#get-torrent-info" id="id84" name="id84">get_torrent_info()</a></li>
<li><a class="reference" href="#is-valid" id="id85" name="id85">is_valid()</a></li>
<li><a class="reference" href="#torrent-handle" id="id63" name="id63">torrent_handle</a><ul>
<li><a class="reference" href="#save-path" id="id64" name="id64">save_path()</a></li>
<li><a class="reference" href="#move-storage" id="id65" name="id65">move_storage()</a></li>
<li><a class="reference" href="#force-reannounce" id="id66" name="id66">force_reannounce()</a></li>
<li><a class="reference" href="#connect-peer" id="id67" name="id67">connect_peer()</a></li>
<li><a class="reference" href="#set-ratio" id="id68" name="id68">set_ratio()</a></li>
<li><a class="reference" href="#set-upload-limit-set-download-limit" id="id69" name="id69">set_upload_limit() set_download_limit()</a></li>
<li><a class="reference" href="#set-peer-upload-limit-set-peer-download-limit" id="id70" name="id70">set_peer_upload_limit() set_peer_download_limit()</a></li>
<li><a class="reference" href="#pause-resume-is-paused" id="id71" name="id71">pause() resume() is_paused()</a></li>
<li><a class="reference" href="#is-seed" id="id72" name="id72">is_seed()</a></li>
<li><a class="reference" href="#has-metadata" id="id73" name="id73">has_metadata()</a></li>
<li><a class="reference" href="#set-tracker-login" id="id74" name="id74">set_tracker_login()</a></li>
<li><a class="reference" href="#trackers-replace-trackers" id="id75" name="id75">trackers() replace_trackers()</a></li>
<li><a class="reference" href="#add-url-seed" id="id76" name="id76">add_url_seed()</a></li>
<li><a class="reference" href="#use-interface" id="id77" name="id77">use_interface()</a></li>
<li><a class="reference" href="#info-hash" id="id78" name="id78">info_hash()</a></li>
<li><a class="reference" href="#id13" id="id79" name="id79">set_max_uploads() set_max_connections()</a></li>
<li><a class="reference" href="#write-resume-data" id="id80" name="id80">write_resume_data()</a></li>
<li><a class="reference" href="#metadata" id="id81" name="id81">metadata()</a></li>
<li><a class="reference" href="#id14" id="id82" name="id82">status()</a></li>
<li><a class="reference" href="#get-download-queue" id="id83" name="id83">get_download_queue()</a></li>
<li><a class="reference" href="#get-peer-info" id="id84" name="id84">get_peer_info()</a></li>
<li><a class="reference" href="#get-torrent-info" id="id85" name="id85">get_torrent_info()</a></li>
<li><a class="reference" href="#is-valid" id="id86" name="id86">is_valid()</a></li>
</ul>
</li>
<li><a class="reference" href="#torrent-status" id="id86" name="id86">torrent_status</a></li>
<li><a class="reference" href="#peer-info" id="id87" name="id87">peer_info</a></li>
<li><a class="reference" href="#session-settings" id="id88" name="id88">session_settings</a></li>
<li><a class="reference" href="#ip-filter" id="id89" name="id89">ip_filter</a><ul>
<li><a class="reference" href="#id16" id="id90" name="id90">ip_filter()</a></li>
<li><a class="reference" href="#add-rule" id="id91" name="id91">add_rule()</a></li>
<li><a class="reference" href="#access" id="id92" name="id92">access()</a></li>
<li><a class="reference" href="#export-filter" id="id93" name="id93">export_filter()</a></li>
<li><a class="reference" href="#torrent-status" id="id87" name="id87">torrent_status</a></li>
<li><a class="reference" href="#peer-info" id="id88" name="id88">peer_info</a></li>
<li><a class="reference" href="#session-settings" id="id89" name="id89">session_settings</a></li>
<li><a class="reference" href="#ip-filter" id="id90" name="id90">ip_filter</a><ul>
<li><a class="reference" href="#id17" id="id91" name="id91">ip_filter()</a></li>
<li><a class="reference" href="#add-rule" id="id92" name="id92">add_rule()</a></li>
<li><a class="reference" href="#access" id="id93" name="id93">access()</a></li>
<li><a class="reference" href="#export-filter" id="id94" name="id94">export_filter()</a></li>
</ul>
</li>
<li><a class="reference" href="#big-number" id="id94" name="id94">big_number</a></li>
<li><a class="reference" href="#hasher" id="id95" name="id95">hasher</a></li>
<li><a class="reference" href="#fingerprint" id="id96" name="id96">fingerprint</a></li>
<li><a class="reference" href="#free-functions" id="id97" name="id97">free functions</a><ul>
<li><a class="reference" href="#identify-client" id="id98" name="id98">identify_client()</a></li>
<li><a class="reference" href="#client-fingerprint" id="id99" name="id99">client_fingerprint()</a></li>
<li><a class="reference" href="#bdecode-bencode" id="id100" name="id100">bdecode() bencode()</a></li>
<li><a class="reference" href="#big-number" id="id95" name="id95">big_number</a></li>
<li><a class="reference" href="#hasher" id="id96" name="id96">hasher</a></li>
<li><a class="reference" href="#fingerprint" id="id97" name="id97">fingerprint</a></li>
<li><a class="reference" href="#free-functions" id="id98" name="id98">free functions</a><ul>
<li><a class="reference" href="#identify-client" id="id99" name="id99">identify_client()</a></li>
<li><a class="reference" href="#client-fingerprint" id="id100" name="id100">client_fingerprint()</a></li>
<li><a class="reference" href="#bdecode-bencode" id="id101" name="id101">bdecode() bencode()</a></li>
</ul>
</li>
<li><a class="reference" href="#alerts" id="id101" name="id101">alerts</a><ul>
<li><a class="reference" href="#listen-failed-alert" id="id102" name="id102">listen_failed_alert</a></li>
<li><a class="reference" href="#file-error-alert" id="id103" name="id103">file_error_alert</a></li>
<li><a class="reference" href="#tracker-announce-alert" id="id104" name="id104">tracker_announce_alert</a></li>
<li><a class="reference" href="#tracker-alert" id="id105" name="id105">tracker_alert</a></li>
<li><a class="reference" href="#tracker-reply-alert" id="id106" name="id106">tracker_reply_alert</a></li>
<li><a class="reference" href="#tracker-warning-alert" id="id107" name="id107">tracker_warning_alert</a></li>
<li><a class="reference" href="#url-seed-alert" id="id108" name="id108">url_seed_alert</a></li>
<li><a class="reference" href="#hash-failed-alert" id="id109" name="id109">hash_failed_alert</a></li>
<li><a class="reference" href="#peer-ban-alert" id="id110" name="id110">peer_ban_alert</a></li>
<li><a class="reference" href="#peer-error-alert" id="id111" name="id111">peer_error_alert</a></li>
<li><a class="reference" href="#invalid-request-alert" id="id112" name="id112">invalid_request_alert</a></li>
<li><a class="reference" href="#torrent-finished-alert" id="id113" name="id113">torrent_finished_alert</a></li>
<li><a class="reference" href="#metadata-failed-alert" id="id114" name="id114">metadata_failed_alert</a></li>
<li><a class="reference" href="#metadata-received-alert" id="id115" name="id115">metadata_received_alert</a></li>
<li><a class="reference" href="#fastresume-rejected-alert" id="id116" name="id116">fastresume_rejected_alert</a></li>
<li><a class="reference" href="#dispatcher" id="id117" name="id117">dispatcher</a></li>
<li><a class="reference" href="#alerts" id="id102" name="id102">alerts</a><ul>
<li><a class="reference" href="#listen-failed-alert" id="id103" name="id103">listen_failed_alert</a></li>
<li><a class="reference" href="#file-error-alert" id="id104" name="id104">file_error_alert</a></li>
<li><a class="reference" href="#tracker-announce-alert" id="id105" name="id105">tracker_announce_alert</a></li>
<li><a class="reference" href="#tracker-alert" id="id106" name="id106">tracker_alert</a></li>
<li><a class="reference" href="#tracker-reply-alert" id="id107" name="id107">tracker_reply_alert</a></li>
<li><a class="reference" href="#tracker-warning-alert" id="id108" name="id108">tracker_warning_alert</a></li>
<li><a class="reference" href="#url-seed-alert" id="id109" name="id109">url_seed_alert</a></li>
<li><a class="reference" href="#hash-failed-alert" id="id110" name="id110">hash_failed_alert</a></li>
<li><a class="reference" href="#peer-ban-alert" id="id111" name="id111">peer_ban_alert</a></li>
<li><a class="reference" href="#peer-error-alert" id="id112" name="id112">peer_error_alert</a></li>
<li><a class="reference" href="#invalid-request-alert" id="id113" name="id113">invalid_request_alert</a></li>
<li><a class="reference" href="#torrent-finished-alert" id="id114" name="id114">torrent_finished_alert</a></li>
<li><a class="reference" href="#metadata-failed-alert" id="id115" name="id115">metadata_failed_alert</a></li>
<li><a class="reference" href="#metadata-received-alert" id="id116" name="id116">metadata_received_alert</a></li>
<li><a class="reference" href="#fastresume-rejected-alert" id="id117" name="id117">fastresume_rejected_alert</a></li>
<li><a class="reference" href="#dispatcher" id="id118" name="id118">dispatcher</a></li>
</ul>
</li>
<li><a class="reference" href="#exceptions" id="id118" name="id118">exceptions</a><ul>
<li><a class="reference" href="#invalid-handle" id="id119" name="id119">invalid_handle</a></li>
<li><a class="reference" href="#duplicate-torrent" id="id120" name="id120">duplicate_torrent</a></li>
<li><a class="reference" href="#invalid-encoding" id="id121" name="id121">invalid_encoding</a></li>
<li><a class="reference" href="#type-error" id="id122" name="id122">type_error</a></li>
<li><a class="reference" href="#invalid-torrent-file" id="id123" name="id123">invalid_torrent_file</a></li>
<li><a class="reference" href="#exceptions" id="id119" name="id119">exceptions</a><ul>
<li><a class="reference" href="#invalid-handle" id="id120" name="id120">invalid_handle</a></li>
<li><a class="reference" href="#duplicate-torrent" id="id121" name="id121">duplicate_torrent</a></li>
<li><a class="reference" href="#invalid-encoding" id="id122" name="id122">invalid_encoding</a></li>
<li><a class="reference" href="#type-error" id="id123" name="id123">type_error</a></li>
<li><a class="reference" href="#invalid-torrent-file" id="id124" name="id124">invalid_torrent_file</a></li>
</ul>
</li>
<li><a class="reference" href="#examples" id="id124" name="id124">examples</a><ul>
<li><a class="reference" href="#dump-torrent" id="id125" name="id125">dump_torrent</a></li>
<li><a class="reference" href="#simple-client" id="id126" name="id126">simple client</a></li>
<li><a class="reference" href="#make-torrent" id="id127" name="id127">make_torrent</a></li>
<li><a class="reference" href="#examples" id="id125" name="id125">examples</a><ul>
<li><a class="reference" href="#dump-torrent" id="id126" name="id126">dump_torrent</a></li>
<li><a class="reference" href="#simple-client" id="id127" name="id127">simple client</a></li>
<li><a class="reference" href="#make-torrent" id="id128" name="id128">make_torrent</a></li>
</ul>
</li>
<li><a class="reference" href="#fast-resume" id="id128" name="id128">fast resume</a><ul>
<li><a class="reference" href="#file-format" id="id129" name="id129">file format</a></li>
<li><a class="reference" href="#fast-resume" id="id129" name="id129">fast resume</a><ul>
<li><a class="reference" href="#file-format" id="id130" name="id130">file format</a></li>
</ul>
</li>
<li><a class="reference" href="#threads" id="id130" name="id130">threads</a></li>
<li><a class="reference" href="#storage-allocation" id="id131" name="id131">storage allocation</a><ul>
<li><a class="reference" href="#full-allocation" id="id132" name="id132">full allocation</a></li>
<li><a class="reference" href="#compact-allocation" id="id133" name="id133">compact allocation</a></li>
<li><a class="reference" href="#threads" id="id131" name="id131">threads</a></li>
<li><a class="reference" href="#storage-allocation" id="id132" name="id132">storage allocation</a><ul>
<li><a class="reference" href="#full-allocation" id="id133" name="id133">full allocation</a></li>
<li><a class="reference" href="#compact-allocation" id="id134" name="id134">compact allocation</a></li>
</ul>
</li>
<li><a class="reference" href="#extensions" id="id134" name="id134">extensions</a><ul>
<li><a class="reference" href="#chat-messages" id="id135" name="id135">chat messages</a></li>
<li><a class="reference" href="#metadata-from-peers" id="id136" name="id136">metadata from peers</a></li>
<li><a class="reference" href="#http-seeding" id="id137" name="id137">HTTP seeding</a></li>
<li><a class="reference" href="#extensions" id="id135" name="id135">extensions</a><ul>
<li><a class="reference" href="#chat-messages" id="id136" name="id136">chat messages</a></li>
<li><a class="reference" href="#metadata-from-peers" id="id137" name="id137">metadata from peers</a></li>
<li><a class="reference" href="#http-seeding" id="id138" name="id138">HTTP seeding</a></li>
</ul>
</li>
<li><a class="reference" href="#filename-checks" id="id138" name="id138">filename checks</a></li>
<li><a class="reference" href="#acknowledgments" id="id139" name="id139">acknowledgments</a></li>
<li><a class="reference" href="#filename-checks" id="id139" name="id139">filename checks</a></li>
<li><a class="reference" href="#acknowledgments" id="id140" name="id140">acknowledgments</a></li>
</ul>
</div>
<div class="section">
@@ -356,7 +356,7 @@ epoll on linux and kqueue on MacOS X and BSD.</p>
<ul class="simple">
<li>Windows 2000 vc7.1</li>
<li>Linux x86 GCC 3.3, GCC 3.4.2</li>
<li>MacOS X (darwin), (Apple's) GCC 4.0</li>
<li>MacOS X (darwin), (Apple's) GCC 3.3, (Apple's) GCC 4.0</li>
<li>SunOS 5.8 GCC 3.1</li>
<li>Cygwin GCC 3.3.3</li>
</ul>
@@ -366,7 +366,6 @@ epoll on linux and kqueue on MacOS X and BSD.</p>
<ul class="simple">
<li>GCC 2.95.4</li>
<li>msvc6</li>
<li>(Apple's) GCC 3.3 (compiler crashes with the latest version of asio)</li>
</ul>
</blockquote>
<p>libtorrent is released under the <a class="reference" href="http://www.opensource.org/licenses/bsd-license.php">BSD-license</a>.</p>
@@ -514,6 +513,7 @@ For more build configuration flags see <a class="reference" href="#build-configu
<p>When building the example client on windows, you need to build with
<tt class="docutils literal"><span class="pre">link=static</span></tt> otherwise you may get unresolved external symbols for some
boost.program-options symbols.</p>
<p>For more information, see the <a class="reference" href="http://www.boost.org/tools/build/v2/index.html">Boost build v2 documentation</a>.</p>
</div>
</div>
<div class="section">
@@ -793,7 +793,7 @@ class session: public boost::noncopyable
<p>Once it's created, the session object will spawn the main thread that will do all the work.
The main thread will be idle as long it doesn't have any torrents to participate in.</p>
<div class="section">
<h2><a id="id8" name="id8">session()</a></h2>
<h2><a id="id9" name="id9">session()</a></h2>
<blockquote>
<pre class="literal-block">
session(fingerprint const&amp; print = libtorrent::fingerprint(&quot;LT&quot;, 0, 1, 0, 0));
@@ -812,7 +812,7 @@ will automatically try to listen on a port on the given interface. For more info
the parameters, see <tt class="docutils literal"><span class="pre">listen_on()</span></tt> function.</p>
</div>
<div class="section">
<h2><a id="id9" name="id9">~session()</a></h2>
<h2><a id="id10" name="id10">~session()</a></h2>
<p>The destructor of session will notify all trackers that our torrents have been shut down.
If some trackers are down, they will time out. All this before the destructor of session
returns. So, it's advised that any kind of interface (such as windows) are closed before
@@ -1252,7 +1252,7 @@ public:
};
</pre>
<div class="section">
<h2><a id="id10" name="id10">torrent_info()</a></h2>
<h2><a id="id11" name="id11">torrent_info()</a></h2>
<blockquote>
<pre class="literal-block">
torrent_info();
@@ -1760,7 +1760,7 @@ sha1_hash info_hash() const;
<p><tt class="docutils literal"><span class="pre">info_hash()</span></tt> returns the info-hash for the torrent.</p>
</div>
<div class="section">
<h2><a id="id12" name="id12">set_max_uploads() set_max_connections()</a></h2>
<h2><a id="id13" name="id13">set_max_uploads() set_max_connections()</a></h2>
<blockquote>
<pre class="literal-block">
void set_max_uploads(int max_uploads) const;
@@ -1809,7 +1809,7 @@ std::vector&lt;char&gt; const&amp; metadata() const;
it will produce the same hash as the info-hash.</p>
</div>
<div class="section">
<h2><a id="id13" name="id13">status()</a></h2>
<h2><a id="id14" name="id14">status()</a></h2>
<blockquote>
<pre class="literal-block">
torrent_status status() const;
@@ -2325,7 +2325,7 @@ public:
</pre>
</blockquote>
<div class="section">
<h2><a id="id16" name="id16">ip_filter()</a></h2>
<h2><a id="id17" name="id17">ip_filter()</a></h2>
<blockquote>
<pre class="literal-block">
ip_filter()