*** empty log message ***

This commit is contained in:
Arvid Norberg 2005-07-16 00:56:50 +00:00
parent 080da58903
commit 300e839fab
8 changed files with 146 additions and 55 deletions

View File

@ -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&amp; addr) const;
struct ip_range
{
address first;
address last;
int flags;
};
std::vector&lt;ip_range&gt; 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&lt;ip_range&gt; 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>

View File

@ -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
==========

View File

@ -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);

View File

@ -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

View File

@ -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";
}
}
*/
}

View File

@ -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())

View File

@ -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)

View File

@ -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;