fixed crashing bug when destructing session

This commit is contained in:
Arvid Norberg
2006-05-21 09:46:01 +00:00
parent 11013054d6
commit 44f21d0fdf
3 changed files with 33 additions and 16 deletions

View File

@@ -348,6 +348,9 @@ want to download.</li>
It uses Boost.Thread, Boost.Filesystem, Boost.Date_time and various other It uses Boost.Thread, Boost.Filesystem, Boost.Date_time and various other
boost libraries as well as <a class="reference" href="http://www.zlib.org">zlib</a> (shipped) and <a class="reference" href="http://asio.sf.net">asio</a> (shipped). At least version boost libraries as well as <a class="reference" href="http://www.zlib.org">zlib</a> (shipped) and <a class="reference" href="http://asio.sf.net">asio</a> (shipped). At least version
1.33.1 of boost is required.</p> 1.33.1 of boost is required.</p>
<p>Since libtorrent uses asio, it will take full advantage of high performance
network APIs on the most popular platforms. I/O completion ports on windows,
epoll on linux and kqueue on MacOS X and BSD.</p>
<p>libtorrent has been successfully compiled and tested on:</p> <p>libtorrent has been successfully compiled and tested on:</p>
<blockquote> <blockquote>
<ul class="simple"> <ul class="simple">
@@ -367,6 +370,10 @@ boost libraries as well as <a class="reference" href="http://www.zlib.org">zlib<
</ul> </ul>
</blockquote> </blockquote>
<p>libtorrent is released under the <a class="reference" href="http://www.opensource.org/licenses/bsd-license.php">BSD-license</a>.</p> <p>libtorrent is released under the <a class="reference" href="http://www.opensource.org/licenses/bsd-license.php">BSD-license</a>.</p>
<p>This means that you can use the library in your project without having to
release its source code. The only requirement is that you give credit
to the author of the library by including the libtorrent licence in your
software or documentation.</p>
</div> </div>
<div class="section"> <div class="section">
<h1><a id="downloading-and-building" name="downloading-and-building">downloading and building</a></h1> <h1><a id="downloading-and-building" name="downloading-and-building">downloading and building</a></h1>
@@ -2274,7 +2281,7 @@ the threshold is 7, all pieces which 7 or more peers have, will be downloaded
in index order.</p> in index order.</p>
<p><tt class="docutils literal"><span class="pre">max_allowed_in_request_queue</span></tt> is the number of outstanding block requests <p><tt class="docutils literal"><span class="pre">max_allowed_in_request_queue</span></tt> is the number of outstanding block requests
a peer is allowed to queue up in the client. If a peer sends more requests a peer is allowed to queue up in the client. If a peer sends more requests
than this (before the first one has been sent) the last request will be than this (before the first one has been handled) the last request will be
dropped. The higher this is, the faster upload speeds the client can get to a dropped. The higher this is, the faster upload speeds the client can get to a
single peer.</p> single peer.</p>
<p><tt class="docutils literal"><span class="pre">max_out_request_queue</span></tt> is the maximum number of outstanding requests to <p><tt class="docutils literal"><span class="pre">max_out_request_queue</span></tt> is the maximum number of outstanding requests to
@@ -2282,10 +2289,11 @@ send to a peer. This limit takes precedence over <tt class="docutils literal"><s
no matter the download speed, the number of outstanding requests will never no matter the download speed, the number of outstanding requests will never
exceed this limit.</p> exceed this limit.</p>
<p><tt class="docutils literal"><span class="pre">whole_pieces_threshold</span></tt> is a limit in seconds. if a whole piece can be <p><tt class="docutils literal"><span class="pre">whole_pieces_threshold</span></tt> is a limit in seconds. if a whole piece can be
downloaded in this number of seconds, or less, the peer_connection will prefer downloaded in at least this number of seconds from a specific peer, the
to request whole pieces at a time from this peer. The benefit of this is to peer_connection will prefer requesting whole pieces at a time from this peer.
better utilize disk caches by doing localized accesses and also to make it The benefit of this is to better utilize disk caches by doing localized
easier to identify bad peers if a piece fails the hash check.</p> accesses and also to make it easier to identify bad peers if a piece fails
the hash check.</p>
</div> </div>
<div class="section"> <div class="section">
<h1><a id="ip-filter" name="ip-filter">ip_filter</a></h1> <h1><a id="ip-filter" name="ip-filter">ip_filter</a></h1>

View File

@@ -70,7 +70,6 @@ __ http://www.getright.com/seedtorrent.html
__ extension_protocol.html __ extension_protocol.html
__ udp_tracker_protocol.html __ udp_tracker_protocol.html
libtorrent is portable at least among Windows, MacOS X and other UNIX-systems. libtorrent is portable at least among Windows, MacOS X and other UNIX-systems.
It uses Boost.Thread, Boost.Filesystem, Boost.Date_time and various other It uses Boost.Thread, Boost.Filesystem, Boost.Date_time and various other
boost libraries as well as zlib_ (shipped) and asio_ (shipped). At least version boost libraries as well as zlib_ (shipped) and asio_ (shipped). At least version
@@ -79,6 +78,10 @@ boost libraries as well as zlib_ (shipped) and asio_ (shipped). At least version
.. _zlib: http://www.zlib.org .. _zlib: http://www.zlib.org
.. _asio: http://asio.sf.net .. _asio: http://asio.sf.net
Since libtorrent uses asio, it will take full advantage of high performance
network APIs on the most popular platforms. I/O completion ports on windows,
epoll on linux and kqueue on MacOS X and BSD.
libtorrent has been successfully compiled and tested on: libtorrent has been successfully compiled and tested on:
* Windows 2000 vc7.1 * Windows 2000 vc7.1
@@ -97,6 +100,11 @@ libtorrent is released under the BSD-license_.
.. _BSD-license: http://www.opensource.org/licenses/bsd-license.php .. _BSD-license: http://www.opensource.org/licenses/bsd-license.php
This means that you can use the library in your project without having to
release its source code. The only requirement is that you give credit
to the author of the library by including the libtorrent licence in your
software or documentation.
downloading and building downloading and building
======================== ========================
@@ -2153,7 +2161,7 @@ in index order.
``max_allowed_in_request_queue`` is the number of outstanding block requests ``max_allowed_in_request_queue`` is the number of outstanding block requests
a peer is allowed to queue up in the client. If a peer sends more requests a peer is allowed to queue up in the client. If a peer sends more requests
than this (before the first one has been sent) the last request will be than this (before the first one has been handled) the last request will be
dropped. The higher this is, the faster upload speeds the client can get to a dropped. The higher this is, the faster upload speeds the client can get to a
single peer. single peer.
@@ -2163,10 +2171,11 @@ no matter the download speed, the number of outstanding requests will never
exceed this limit. exceed this limit.
``whole_pieces_threshold`` is a limit in seconds. if a whole piece can be ``whole_pieces_threshold`` is a limit in seconds. if a whole piece can be
downloaded in this number of seconds, or less, the peer_connection will prefer downloaded in at least this number of seconds from a specific peer, the
to request whole pieces at a time from this peer. The benefit of this is to peer_connection will prefer requesting whole pieces at a time from this peer.
better utilize disk caches by doing localized accesses and also to make it The benefit of this is to better utilize disk caches by doing localized
easier to identify bad peers if a piece fails the hash check. accesses and also to make it easier to identify bad peers if a piece fails
the hash check.
ip_filter ip_filter

View File

@@ -208,6 +208,11 @@ namespace libtorrent
boost::weak_ptr<torrent> find_torrent(const sha1_hash& info_hash); boost::weak_ptr<torrent> find_torrent(const sha1_hash& info_hash);
peer_id const& get_peer_id() const { return m_peer_id; } peer_id const& get_peer_id() const { return m_peer_id; }
// this is where all active sockets are stored.
// the selector can sleep while there's no activity on
// them
demuxer m_selector;
tracker_manager m_tracker_manager; tracker_manager m_tracker_manager;
torrent_map m_torrents; torrent_map m_torrents;
@@ -259,11 +264,6 @@ namespace libtorrent
// interface to listen on // interface to listen on
tcp::endpoint m_listen_interface; tcp::endpoint m_listen_interface;
// this is where all active sockets are stored.
// the selector can sleep while there's no activity on
// them
demuxer m_selector;
boost::shared_ptr<socket_acceptor> m_listen_socket; boost::shared_ptr<socket_acceptor> m_listen_socket;
// the entries in this array maps the // the entries in this array maps the