*** empty log message ***
This commit is contained in:
parent
080da58903
commit
300e839fab
|
@ -91,57 +91,58 @@
|
|||
<li><a class="reference" href="#id14" id="id75" name="id75">ip_filter()</a></li>
|
||||
<li><a class="reference" href="#add-rule" id="id76" name="id76">add_rule()</a></li>
|
||||
<li><a class="reference" href="#access" id="id77" name="id77">access()</a></li>
|
||||
<li><a class="reference" href="#export-filter" id="id78" name="id78">export_filter()</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference" href="#big-number" id="id78" name="id78">big_number</a></li>
|
||||
<li><a class="reference" href="#hasher" id="id79" name="id79">hasher</a></li>
|
||||
<li><a class="reference" href="#fingerprint" id="id80" name="id80">fingerprint</a></li>
|
||||
<li><a class="reference" href="#free-functions" id="id81" name="id81">free functions</a><ul>
|
||||
<li><a class="reference" href="#identify-client" id="id82" name="id82">identify_client()</a></li>
|
||||
<li><a class="reference" href="#bdecode-bencode" id="id83" name="id83">bdecode() bencode()</a></li>
|
||||
<li><a class="reference" href="#big-number" id="id79" name="id79">big_number</a></li>
|
||||
<li><a class="reference" href="#hasher" id="id80" name="id80">hasher</a></li>
|
||||
<li><a class="reference" href="#fingerprint" id="id81" name="id81">fingerprint</a></li>
|
||||
<li><a class="reference" href="#free-functions" id="id82" name="id82">free functions</a><ul>
|
||||
<li><a class="reference" href="#identify-client" id="id83" name="id83">identify_client()</a></li>
|
||||
<li><a class="reference" href="#bdecode-bencode" id="id84" name="id84">bdecode() bencode()</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference" href="#alerts" id="id84" name="id84">alerts</a><ul>
|
||||
<li><a class="reference" href="#listen-failed-alert" id="id85" name="id85">listen_failed_alert</a></li>
|
||||
<li><a class="reference" href="#file-error-alert" id="id86" name="id86">file_error_alert</a></li>
|
||||
<li><a class="reference" href="#tracker-announce-alert" id="id87" name="id87">tracker_announce_alert</a></li>
|
||||
<li><a class="reference" href="#tracker-alert" id="id88" name="id88">tracker_alert</a></li>
|
||||
<li><a class="reference" href="#tracker-reply-alert" id="id89" name="id89">tracker_reply_alert</a></li>
|
||||
<li><a class="reference" href="#hash-failed-alert" id="id90" name="id90">hash_failed_alert</a></li>
|
||||
<li><a class="reference" href="#peer-ban-alert" id="id91" name="id91">peer_ban_alert</a></li>
|
||||
<li><a class="reference" href="#peer-error-alert" id="id92" name="id92">peer_error_alert</a></li>
|
||||
<li><a class="reference" href="#invalid-request-alert" id="id93" name="id93">invalid_request_alert</a></li>
|
||||
<li><a class="reference" href="#torrent-finished-alert" id="id94" name="id94">torrent_finished_alert</a></li>
|
||||
<li><a class="reference" href="#metadata-received-alert" id="id95" name="id95">metadata_received_alert</a></li>
|
||||
<li><a class="reference" href="#fastresume-rejected-alert" id="id96" name="id96">fastresume_rejected_alert</a></li>
|
||||
<li><a class="reference" href="#dispatcher" id="id97" name="id97">dispatcher</a></li>
|
||||
<li><a class="reference" href="#alerts" id="id85" name="id85">alerts</a><ul>
|
||||
<li><a class="reference" href="#listen-failed-alert" id="id86" name="id86">listen_failed_alert</a></li>
|
||||
<li><a class="reference" href="#file-error-alert" id="id87" name="id87">file_error_alert</a></li>
|
||||
<li><a class="reference" href="#tracker-announce-alert" id="id88" name="id88">tracker_announce_alert</a></li>
|
||||
<li><a class="reference" href="#tracker-alert" id="id89" name="id89">tracker_alert</a></li>
|
||||
<li><a class="reference" href="#tracker-reply-alert" id="id90" name="id90">tracker_reply_alert</a></li>
|
||||
<li><a class="reference" href="#hash-failed-alert" id="id91" name="id91">hash_failed_alert</a></li>
|
||||
<li><a class="reference" href="#peer-ban-alert" id="id92" name="id92">peer_ban_alert</a></li>
|
||||
<li><a class="reference" href="#peer-error-alert" id="id93" name="id93">peer_error_alert</a></li>
|
||||
<li><a class="reference" href="#invalid-request-alert" id="id94" name="id94">invalid_request_alert</a></li>
|
||||
<li><a class="reference" href="#torrent-finished-alert" id="id95" name="id95">torrent_finished_alert</a></li>
|
||||
<li><a class="reference" href="#metadata-received-alert" id="id96" name="id96">metadata_received_alert</a></li>
|
||||
<li><a class="reference" href="#fastresume-rejected-alert" id="id97" name="id97">fastresume_rejected_alert</a></li>
|
||||
<li><a class="reference" href="#dispatcher" id="id98" name="id98">dispatcher</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference" href="#exceptions" id="id98" name="id98">exceptions</a><ul>
|
||||
<li><a class="reference" href="#invalid-handle" id="id99" name="id99">invalid_handle</a></li>
|
||||
<li><a class="reference" href="#duplicate-torrent" id="id100" name="id100">duplicate_torrent</a></li>
|
||||
<li><a class="reference" href="#invalid-encoding" id="id101" name="id101">invalid_encoding</a></li>
|
||||
<li><a class="reference" href="#type-error" id="id102" name="id102">type_error</a></li>
|
||||
<li><a class="reference" href="#invalid-torrent-file" id="id103" name="id103">invalid_torrent_file</a></li>
|
||||
<li><a class="reference" href="#exceptions" id="id99" name="id99">exceptions</a><ul>
|
||||
<li><a class="reference" href="#invalid-handle" id="id100" name="id100">invalid_handle</a></li>
|
||||
<li><a class="reference" href="#duplicate-torrent" id="id101" name="id101">duplicate_torrent</a></li>
|
||||
<li><a class="reference" href="#invalid-encoding" id="id102" name="id102">invalid_encoding</a></li>
|
||||
<li><a class="reference" href="#type-error" id="id103" name="id103">type_error</a></li>
|
||||
<li><a class="reference" href="#invalid-torrent-file" id="id104" name="id104">invalid_torrent_file</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference" href="#examples" id="id104" name="id104">examples</a><ul>
|
||||
<li><a class="reference" href="#dump-torrent" id="id105" name="id105">dump_torrent</a></li>
|
||||
<li><a class="reference" href="#simple-client" id="id106" name="id106">simple client</a></li>
|
||||
<li><a class="reference" href="#make-torrent" id="id107" name="id107">make_torrent</a></li>
|
||||
<li><a class="reference" href="#examples" id="id105" name="id105">examples</a><ul>
|
||||
<li><a class="reference" href="#dump-torrent" id="id106" name="id106">dump_torrent</a></li>
|
||||
<li><a class="reference" href="#simple-client" id="id107" name="id107">simple client</a></li>
|
||||
<li><a class="reference" href="#make-torrent" id="id108" name="id108">make_torrent</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference" href="#fast-resume" id="id108" name="id108">fast resume</a><ul>
|
||||
<li><a class="reference" href="#file-format" id="id109" name="id109">file format</a></li>
|
||||
<li><a class="reference" href="#fast-resume" id="id109" name="id109">fast resume</a><ul>
|
||||
<li><a class="reference" href="#file-format" id="id110" name="id110">file format</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference" href="#extensions" id="id110" name="id110">extensions</a><ul>
|
||||
<li><a class="reference" href="#chat-messages" id="id111" name="id111">chat messages</a></li>
|
||||
<li><a class="reference" href="#metadata-from-peers" id="id112" name="id112">metadata from peers</a></li>
|
||||
<li><a class="reference" href="#extensions" id="id111" name="id111">extensions</a><ul>
|
||||
<li><a class="reference" href="#chat-messages" id="id112" name="id112">chat messages</a></li>
|
||||
<li><a class="reference" href="#metadata-from-peers" id="id113" name="id113">metadata from peers</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a class="reference" href="#filename-checks" id="id113" name="id113">filename checks</a></li>
|
||||
<li><a class="reference" href="#acknowledgements" id="id114" name="id114">acknowledgements</a></li>
|
||||
<li><a class="reference" href="#filename-checks" id="id114" name="id114">filename checks</a></li>
|
||||
<li><a class="reference" href="#acknowledgements" id="id115" name="id115">acknowledgements</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="section" id="introduction">
|
||||
|
@ -1655,6 +1656,15 @@ public:
|
|||
ip_filter();
|
||||
void add_rule(address first, address last, int flags);
|
||||
int access(address const& addr) const;
|
||||
|
||||
struct ip_range
|
||||
{
|
||||
address first;
|
||||
address last;
|
||||
int flags;
|
||||
};
|
||||
|
||||
std::vector<ip_range> export_filter() const;
|
||||
};
|
||||
</pre>
|
||||
</blockquote>
|
||||
|
@ -1697,6 +1707,18 @@ can currently be 0 or <tt class="docutils literal"><span class="pre">ip_filter::
|
|||
is O(<tt class="docutils literal"><span class="pre">log</span></tt> n), where n is the minimum number of non-overlapping ranges to describe
|
||||
the current filter.</p>
|
||||
</div>
|
||||
<div class="section" id="export-filter">
|
||||
<h2><a name="export-filter">export_filter()</a></h2>
|
||||
<blockquote>
|
||||
<pre class="literal-block">
|
||||
std::vector<ip_range> export_filter() const;
|
||||
</pre>
|
||||
</blockquote>
|
||||
<p>This function will return the current state of the filter in the minimum number of
|
||||
ranges possible. They are sorted from ranges in low addresses to high addresses. Each
|
||||
entry in the returned vector is a range with the access control specified in its
|
||||
<tt class="docutils literal"><span class="pre">flags</span></tt> field.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" id="big-number">
|
||||
<h1><a name="big-number">big_number</a></h1>
|
||||
|
|
|
@ -1636,6 +1636,15 @@ a single rule that allowes all addresses (0.0.0.0 - 255.255.255.255).
|
|||
ip_filter();
|
||||
void add_rule(address first, address last, int flags);
|
||||
int access(address const& addr) const;
|
||||
|
||||
struct ip_range
|
||||
{
|
||||
address first;
|
||||
address last;
|
||||
int flags;
|
||||
};
|
||||
|
||||
std::vector<ip_range> export_filter() const;
|
||||
};
|
||||
|
||||
|
||||
|
@ -1684,6 +1693,19 @@ is O(``log`` n), where n is the minimum number of non-overlapping ranges to desc
|
|||
the current filter.
|
||||
|
||||
|
||||
export_filter()
|
||||
---------------
|
||||
|
||||
::
|
||||
|
||||
std::vector<ip_range> export_filter() const;
|
||||
|
||||
This function will return the current state of the filter in the minimum number of
|
||||
ranges possible. They are sorted from ranges in low addresses to high addresses. Each
|
||||
entry in the returned vector is a range with the access control specified in its
|
||||
``flags`` field.
|
||||
|
||||
|
||||
big_number
|
||||
==========
|
||||
|
||||
|
|
|
@ -372,7 +372,7 @@ int main(int argc, char* argv[])
|
|||
catch (invalid_encoding&) {}
|
||||
catch (boost::filesystem::filesystem_error&) {}
|
||||
|
||||
handles.push_back(ses.add_torrent(e, save_path, resume_data, true, 128 * 1024));
|
||||
handles.push_back(ses.add_torrent(e, save_path, resume_data, true, 64 * 1024));
|
||||
handles.back().set_max_connections(100);
|
||||
handles.back().set_max_uploads(-1);
|
||||
handles.back().set_ratio(1.02f);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
|
||||
Copyright (c) 2003, Arvid Norberg
|
||||
Copyright (c) 2005, Arvid Norberg
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
|
@ -52,7 +52,17 @@ public:
|
|||
ip_filter();
|
||||
void add_rule(address first, address last, int flags);
|
||||
int access(address const& addr) const;
|
||||
void print() const;
|
||||
|
||||
struct ip_range
|
||||
{
|
||||
address first;
|
||||
address last;
|
||||
int flags;
|
||||
};
|
||||
|
||||
std::vector<ip_range> export_filter() const;
|
||||
|
||||
// void print() const;
|
||||
|
||||
private:
|
||||
struct range
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/*
|
||||
|
||||
Copyright (c) 2003, Arvid Norberg
|
||||
Copyright (c) 2005, Arvid Norberg
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
|
@ -59,14 +59,14 @@ namespace libtorrent
|
|||
assert(j != i);
|
||||
|
||||
int first_access = i->access;
|
||||
|
||||
/*
|
||||
std::cout << "flags: " << flags << "\n";
|
||||
std::cout << "first_access: " << first_access << "\n";
|
||||
std::cout << "i->start: " << i->start.as_string() << "\n";
|
||||
std::cout << "first: " << first.as_string() << "\n";
|
||||
|
||||
*/
|
||||
int last_access = last_access = prior(j)->access;
|
||||
std::cout << "last_access: " << last_access << "\n";
|
||||
// std::cout << "last_access: " << last_access << "\n";
|
||||
|
||||
if (i->start != first && first_access != flags)
|
||||
{
|
||||
|
@ -77,20 +77,20 @@ namespace libtorrent
|
|||
--i;
|
||||
first_access = i->access;
|
||||
}
|
||||
|
||||
/*
|
||||
std::cout << "distance(i, j): " << std::distance(i, j) << "\n";
|
||||
std::cout << "size(): " << m_access_list.size() << "\n";
|
||||
|
||||
*/
|
||||
assert(!m_access_list.empty());
|
||||
assert(i != m_access_list.end());
|
||||
|
||||
if (i != j)
|
||||
m_access_list.erase(next(i), j);
|
||||
|
||||
/*
|
||||
std::cout << "size(): " << m_access_list.size() << "\n";
|
||||
std::cout << "last: " << last.as_string() << "\n";
|
||||
std::cout << "last.ip(): " << last.ip() << " " << 0xffffffff << "\n";
|
||||
|
||||
*/
|
||||
if (i->start == first)
|
||||
{
|
||||
// we can do this const-cast because we know that the new
|
||||
|
@ -107,7 +107,7 @@ namespace libtorrent
|
|||
|| (j == m_access_list.end() && last.ip() != 0xffffffff))
|
||||
{
|
||||
assert(j == m_access_list.end() || last.ip() < j->start.ip() - 1);
|
||||
std::cout << " -- last_access: " << last_access << "\n";
|
||||
// std::cout << " -- last_access: " << last_access << "\n";
|
||||
if (last_access != flags)
|
||||
j = m_access_list.insert(j, range(address(last.ip() + 1, 0), last_access));
|
||||
}
|
||||
|
@ -127,6 +127,32 @@ namespace libtorrent
|
|||
return i->access;
|
||||
}
|
||||
|
||||
|
||||
std::vector<ip_filter::ip_range> ip_filter::export_filter() const
|
||||
{
|
||||
std::vector<ip_range> ret;
|
||||
ret.reserve(m_access_list.size());
|
||||
|
||||
for (range_t::const_iterator i = m_access_list.begin()
|
||||
, end(m_access_list.end()); i != end;)
|
||||
{
|
||||
ip_range r;
|
||||
r.first = i->start;
|
||||
assert(r.first.port == 0);
|
||||
r.flags = i->access;
|
||||
|
||||
++i;
|
||||
if (i == end)
|
||||
r.last = address(0xffffffff, 0);
|
||||
else
|
||||
r.last = address(i->start.ip() - 1, 0);
|
||||
|
||||
ret.push_back(r);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
void ip_filter::print() const
|
||||
{
|
||||
for (range_t::iterator i = m_access_list.begin(); i != m_access_list.end(); ++i)
|
||||
|
@ -134,6 +160,6 @@ namespace libtorrent
|
|||
std::cout << i->start.as_string() << " " << i->access << "\n";
|
||||
}
|
||||
}
|
||||
|
||||
*/
|
||||
}
|
||||
|
||||
|
|
|
@ -926,8 +926,7 @@ namespace libtorrent
|
|||
#ifdef TORRENT_VERBOSE_LOGGING
|
||||
using namespace boost::posix_time;
|
||||
for (std::deque<piece_block>::iterator i = m_download_queue.begin();
|
||||
i != m_download_queue.end();
|
||||
++i)
|
||||
i != m_download_queue.end(); ++i)
|
||||
{
|
||||
if (i->piece_index == p.piece
|
||||
&& i->block_index == p.start / m_torrent->block_size())
|
||||
|
|
|
@ -600,8 +600,7 @@ namespace libtorrent { namespace detail
|
|||
|
||||
// disconnect the one we couldn't connect to
|
||||
for (std::vector<boost::shared_ptr<socket> >::iterator i = error_clients.begin();
|
||||
i != error_clients.end();
|
||||
++i)
|
||||
i != error_clients.end(); ++i)
|
||||
{
|
||||
connection_map::iterator p = m_connections.find(*i);
|
||||
if (p != m_connections.end())
|
||||
|
@ -909,6 +908,19 @@ namespace libtorrent
|
|||
{
|
||||
boost::mutex::scoped_lock l(m_impl.m_mutex);
|
||||
m_impl.m_ip_filter = f;
|
||||
|
||||
// Close connections whose endpoint is filtered
|
||||
// by the new ip-filter
|
||||
for (detail::session_impl::connection_map::iterator i
|
||||
= m_impl.m_connections.begin(); i != m_impl.m_connections.end();)
|
||||
{
|
||||
if (m_impl.m_ip_filter.access(i->first->sender())
|
||||
& ip_filter::blocked)
|
||||
{
|
||||
m_impl.m_connections.erase(i++);
|
||||
}
|
||||
else ++i;
|
||||
}
|
||||
}
|
||||
|
||||
void session::set_peer_id(peer_id const& id)
|
||||
|
|
|
@ -677,7 +677,7 @@ namespace libtorrent
|
|||
|
||||
// the bitmask need to have exactly one bit for every file
|
||||
// in the torrent
|
||||
assert(bitmask.size() == m_torrent_file.num_files());
|
||||
assert((int)bitmask.size() == m_torrent_file.num_files());
|
||||
|
||||
size_type position = 0;
|
||||
|
||||
|
|
Loading…
Reference in New Issue