aboutsummaryrefslogtreecommitdiffstats
path: root/net-p2p
diff options
context:
space:
mode:
authoramdmi3 <amdmi3@FreeBSD.org>2016-08-19 22:22:45 +0800
committeramdmi3 <amdmi3@FreeBSD.org>2016-08-19 22:22:45 +0800
commite44475cdb1321cda0535a76aa0f06c273b2753d9 (patch)
treed2f576f525f99e3909eed30d3970c2476ee4144d /net-p2p
parent74391bf16ceb6f795e34816f09e1c2d57a1f07b5 (diff)
downloadfreebsd-ports-gnome-e44475cdb1321cda0535a76aa0f06c273b2753d9.tar.gz
freebsd-ports-gnome-e44475cdb1321cda0535a76aa0f06c273b2753d9.tar.zst
freebsd-ports-gnome-e44475cdb1321cda0535a76aa0f06c273b2753d9.zip
Update net-p2p/libtorrent-rasterbar and its slave libtorrent-rasterbar-python to 1.1.0
* USE_OPENSSL -> USES=ssl * remove GeoIP bits as those have been removed from the library * update LIB_DEPENDS and switch to += in the master as the slave needs the same boost libs * remove 2 obsolete patches, regen 1 patch * add a patch from upstream git to resolve CVE-2016-5301 * add a TEST option and a patch from upstream git to let tests compile * simplify the install of DOCS and EXAMPLES * remove stale portscout restriction so updates can be discovered * update text and WWW in pkg-descr * update pkg-plist * cleanup the slave port's Makefile * assume maintainership PR: 211963 Submitted by: matthew@reztek.cz
Diffstat (limited to 'net-p2p')
-rw-r--r--net-p2p/libtorrent-rasterbar-python/Makefile4
-rw-r--r--net-p2p/libtorrent-rasterbar/Makefile63
-rw-r--r--net-p2p/libtorrent-rasterbar/distinfo5
-rw-r--r--net-p2p/libtorrent-rasterbar/files/patch-git_3624ce6c279
-rw-r--r--net-p2p/libtorrent-rasterbar/files/patch-git_95e348be132
-rw-r--r--net-p2p/libtorrent-rasterbar/files/patch-include-libtorrent-config.hpp16
-rw-r--r--net-p2p/libtorrent-rasterbar/files/patch-src_lazy__bdecode.cpp12
-rw-r--r--net-p2p/libtorrent-rasterbar/files/patch-src_utp__stream.cpp11
-rw-r--r--net-p2p/libtorrent-rasterbar/pkg-descr16
-rw-r--r--net-p2p/libtorrent-rasterbar/pkg-plist173
10 files changed, 520 insertions, 191 deletions
diff --git a/net-p2p/libtorrent-rasterbar-python/Makefile b/net-p2p/libtorrent-rasterbar-python/Makefile
index 612922a5e082..fc84a3b4bdee 100644
--- a/net-p2p/libtorrent-rasterbar-python/Makefile
+++ b/net-p2p/libtorrent-rasterbar-python/Makefile
@@ -22,9 +22,9 @@ PYDISTUTILS_PKGNAME= python_libtorrent
PLIST= ${NONEXISTENT}
PLIST_FILES= %%PYTHON_SITELIBDIR%%/libtorrent.so
-OPTIONS_EXCLUDE= DOCS EXAMPLES STRIP
+OPTIONS_EXCLUDE= DOCS EXAMPLES
-# insure python paths are correctly identified
+# ensure python paths are correctly identified
CONFIGURE_ENV= PYTHON_INCLUDEDIR="${PYTHON_INCLUDEDIR}" \
PYTHON_VERSION="${PYTHON_VERSION}"
diff --git a/net-p2p/libtorrent-rasterbar/Makefile b/net-p2p/libtorrent-rasterbar/Makefile
index 26fd12f37df6..6ce81c6f835c 100644
--- a/net-p2p/libtorrent-rasterbar/Makefile
+++ b/net-p2p/libtorrent-rasterbar/Makefile
@@ -2,22 +2,23 @@
# $FreeBSD$
PORTNAME= libtorrent-rasterbar
-PORTVERSION= 1.0.9
+PORTVERSION= 1.1.0
CATEGORIES?= net-p2p ipv6
-MASTER_SITES= https://github.com/arvidn/libtorrent/releases/download/libtorrent-${PORTVERSION:S/./_/g}/
+MASTER_SITES= https://github.com/arvidn/libtorrent/releases/download/libtorrent-${PORTVERSION:R:S/./_/g}/
-MAINTAINER= ports@FreeBSD.org
+MAINTAINER= matthew@reztek.cz
COMMENT?= C++ library implementing a BitTorrent client
LICENSE= BSD3CLAUSE
-LIB_DEPENDS?= libboost_date_time.so:devel/boost-libs \
- libGeoIP.so:net/GeoIP
+LIB_DEPENDS+= libboost_chrono.so:devel/boost-libs \
+ libboost_random.so:devel/boost-libs \
+ libboost_system.so:devel/boost-libs
-USES+= compiler:c++11-lang iconv:wchar_t libtool pathfix pkgconfig
-USE_OPENSSL= yes
+USES+= compiler:c++11-lang iconv:wchar_t libtool pathfix pkgconfig ssl
GNU_CONFIGURE= yes
USE_LDCONFIG= yes
+TEST_TARGET= check
CONFIGURE_ARGS= --disable-static \
--enable-dht \
@@ -26,37 +27,24 @@ CONFIGURE_ARGS= --disable-static \
--enable-deprecated-functions \
--with-boost=${LOCALBASE} \
--with-boost-system=boost_system \
- --enable-geoip \
- --with-libgeoip \
--with-libiconv \
--with-openssl=${OPENSSLBASE}
-SHLIB_VER= 8
+SHLIB_VER= 9
PLIST_SUB+= SHLIB_VER="${SHLIB_VER}"
-DOCSRCDIR1= ${WRKSRC}
-DOC_FILES1= AUTHORS ChangeLog
-
-DOCSRCDIR2= ${WRKSRC}/docs
-DOCSDIR2= ${DOCSDIR}/docs
-DOC_FILES2= *.*
-
-DOCSRCDIR3= ${WRKSRC}/docs/img
-DOCSDIR3= ${DOCSDIR}/docs/img
-DOC_FILES3= *
-
+DOCFILES= AUTHORS ChangeLog
+PORTDOCS= ${DOCFILES} docs/*
PORTEXAMPLES= *.cpp
-OPTIONS_DEFINE= DEBUG DOCS EXAMPLES
+OPTIONS_DEFINE= DEBUG DOCS EXAMPLES TEST
+TEST_DESC= Build and run tests (increases library size)
DEBUG_CONFIGURE_ENABLE= debug
+TEST_CONFIGURE_ENABLE= tests
.include <bsd.port.options.mk>
-# Restrict to stable (even) versions, indicated by the second component.
-# With Versions 1.x not build yet net-p2p/qbittorrent
-PORTSCOUT= limit:^0.16\..*
-
.if defined(SLAVE_PORT) && ${SLAVE_PORT:tl} == "yes" && defined(USE_PYTHON)
CONFIGURE_ARGS+= --enable-python-binding \
--with-boost-python=boost_python
@@ -68,27 +56,26 @@ post-patch:
@${REINPLACE_CMD} -e 's|/usr/local/include|${PREFIX}/include|' \
${WRKSRC}/Jamfile
+post-configure:
+ ${FIND} ${WRKSRC} -name Makefile -o -name link_flags | \
+ ${XARGS} ${REINPLACE_CMD} 's| *-R${LOCALBASE}/lib||'
+
post-install:
.if defined(SLAVE_PORT) && ${SLAVE_PORT:tl} == "yes" && defined(USE_PYTHON)
- ${STRIP_CMD} \
- ${STAGEDIR}${PYTHON_SITELIBDIR}/libtorrent.so
+ ${STRIP_CMD} ${STAGEDIR}${PYTHON_SITELIBDIR}/libtorrent.so
.else
${STRIP_CMD} \
${STAGEDIR}${PREFIX}/lib/libtorrent-rasterbar.so.${SHLIB_VER}
.endif
-.if ${PORT_OPTIONS:MDOCS}
- @${MKDIR} ${STAGEDIR}${DOCSDIR} ${STAGEDIR}${DOCSDIR2}
- @${MKDIR} ${STAGEDIR}${DOCSDIR} ${STAGEDIR}${DOCSDIR3}
- ${INSTALL_DATA} ${DOC_FILES1:S|^|${DOCSRCDIR1}/|} ${STAGEDIR}${DOCSDIR}
- ${INSTALL_DATA} ${DOC_FILES2:S|^|${DOCSRCDIR2}/|} ${STAGEDIR}${DOCSDIR2}
- ${INSTALL_DATA} ${DOC_FILES3:S|^|${DOCSRCDIR3}/|} ${STAGEDIR}${DOCSDIR3}
-.endif
+post-install-DOCS-on:
+ @${MKDIR} ${STAGEDIR}${DOCSDIR}
+ ${INSTALL_MAN} ${DOCFILES:S|^|${WRKSRC}/|} ${STAGEDIR}${DOCSDIR}
+ (cd ${WRKSRC} && ${COPYTREE_SHARE} docs ${STAGEDIR}${DOCSDIR})
-.if ${PORT_OPTIONS:MEXAMPLES}
+post-install-EXAMPLES-on:
@${MKDIR} ${STAGEDIR}${EXAMPLESDIR}
- ${INSTALL_DATA} ${PORTEXAMPLES:S|^|${WRKSRC}/examples/|} \
+ ${INSTALL_DATA} ${WRKSRC}/examples/${PORTEXAMPLES} \
${STAGEDIR}${EXAMPLESDIR}
-.endif
.include <bsd.port.mk>
diff --git a/net-p2p/libtorrent-rasterbar/distinfo b/net-p2p/libtorrent-rasterbar/distinfo
index 35f64b90e501..44693a2b29f9 100644
--- a/net-p2p/libtorrent-rasterbar/distinfo
+++ b/net-p2p/libtorrent-rasterbar/distinfo
@@ -1,2 +1,3 @@
-SHA256 (libtorrent-rasterbar-1.0.9.tar.gz) = 11a93125ed49f796fca83da925ab7dc29e91d88b915f078caaddaaf559d63db6
-SIZE (libtorrent-rasterbar-1.0.9.tar.gz) = 3292886
+TIMESTAMP = 1471285838
+SHA256 (libtorrent-rasterbar-1.1.0.tar.gz) = 2713df7da4aec5263ac11b6626ea966f368a5a8081103fd8f2f2ed97b5cd731d
+SIZE (libtorrent-rasterbar-1.1.0.tar.gz) = 3629123
diff --git a/net-p2p/libtorrent-rasterbar/files/patch-git_3624ce6c b/net-p2p/libtorrent-rasterbar/files/patch-git_3624ce6c
new file mode 100644
index 000000000000..87154b158ed4
--- /dev/null
+++ b/net-p2p/libtorrent-rasterbar/files/patch-git_3624ce6c
@@ -0,0 +1,279 @@
+From 3624ce6cfd4d197db75f01ae4be37723d7d9b638 Mon Sep 17 00:00:00 2001
+From: Arvid Norberg <arvid.norberg@gmail.com>
+Date: Sat, 4 Jun 2016 09:53:23 -0400
+Subject: [PATCH] fixed crash on invalid input in http_parser (#782)
+
+fixed crash on invalid input to http_parser
+---
+ ChangeLog | 1 +
+ include/libtorrent/add_torrent_params.hpp | 3 +-
+ src/http_parser.cpp | 32 +++++++
+ test/test_http_parser.cpp | 139 +++++++++++++++++++++++++-----
+ 4 files changed, 151 insertions(+), 24 deletions(-)
+
+diff --git a/src/http_parser.cpp b/src/http_parser.cpp
+index a9497f8..52f6152 100644
+--- src/http_parser.cpp
++++ src/http_parser.cpp
+@@ -174,6 +174,7 @@ namespace libtorrent
+ if (m_state == read_status)
+ {
+ TORRENT_ASSERT(!m_finished);
++ TORRENT_ASSERT(pos <= recv_buffer.end);
+ char const* newline = std::find(pos, recv_buffer.end, '\n');
+ // if we don't have a full line yet, wait.
+ if (newline == recv_buffer.end)
+@@ -194,6 +195,7 @@ namespace libtorrent
+
+ char const* line = pos;
+ ++newline;
++ TORRENT_ASSERT(newline >= pos);
+ int incoming = int(newline - pos);
+ m_recv_pos += incoming;
+ boost::get<1>(ret) += newline - (m_recv_buffer.begin + start_pos);
+@@ -227,6 +229,7 @@ namespace libtorrent
+ if (m_state == read_header)
+ {
+ TORRENT_ASSERT(!m_finished);
++ TORRENT_ASSERT(pos <= recv_buffer.end);
+ char const* newline = std::find(pos, recv_buffer.end, '\n');
+ std::string line;
+
+@@ -277,6 +280,12 @@ namespace libtorrent
+ if (name == "content-length")
+ {
+ m_content_length = strtoll(value.c_str(), 0, 10);
++ if (m_content_length < 0)
++ {
++ m_state = error_state;
++ error = true;
++ return ret;
++ }
+ }
+ else if (name == "connection")
+ {
+@@ -294,12 +303,24 @@ namespace libtorrent
+ if (string_begins_no_case("bytes ", ptr)) ptr += 6;
+ char* end;
+ m_range_start = strtoll(ptr, &end, 10);
++ if (m_range_start < 0)
++ {
++ m_state = error_state;
++ error = true;
++ return ret;
++ }
+ if (end == ptr) success = false;
+ else if (*end != '-') success = false;
+ else
+ {
+ ptr = end + 1;
+ m_range_end = strtoll(ptr, &end, 10);
++ if (m_range_end < 0)
++ {
++ m_state = error_state;
++ error = true;
++ return ret;
++ }
+ if (end == ptr) success = false;
+ }
+
+@@ -318,6 +339,7 @@ namespace libtorrent
+ }
+
+ TORRENT_ASSERT(m_recv_pos <= recv_buffer.left());
++ TORRENT_ASSERT(pos <= recv_buffer.end);
+ newline = std::find(pos, recv_buffer.end, '\n');
+ }
+ boost::get<1>(ret) += newline - (m_recv_buffer.begin + start_pos);
+@@ -347,6 +369,12 @@ namespace libtorrent
+ int header_size;
+ if (parse_chunk_header(buf, &chunk_size, &header_size))
+ {
++ if (chunk_size < 0)
++ {
++ m_state = error_state;
++ error = true;
++ return ret;
++ }
+ if (chunk_size > 0)
+ {
+ std::pair<boost::int64_t, boost::int64_t> chunk_range(m_cur_chunk_end + header_size
+@@ -419,6 +447,7 @@ namespace libtorrent
+ bool http_parser::parse_chunk_header(buffer::const_interval buf
+ , boost::int64_t* chunk_size, int* header_size)
+ {
++ TORRENT_ASSERT(buf.begin <= buf.end);
+ char const* pos = buf.begin;
+
+ // ignore one optional new-line. This is since each chunk
+@@ -429,6 +458,7 @@ namespace libtorrent
+ if (pos < buf.end && pos[0] == '\n') ++pos;
+ if (pos == buf.end) return false;
+
++ TORRENT_ASSERT(pos <= buf.end);
+ char const* newline = std::find(pos, buf.end, '\n');
+ if (newline == buf.end) return false;
+ ++newline;
+@@ -441,6 +471,8 @@ namespace libtorrent
+
+ // first, read the chunk length
+ *chunk_size = strtoll(pos, 0, 16);
++ if (*chunk_size < 0) return true;
++
+ if (*chunk_size != 0)
+ {
+ *header_size = newline - buf.begin;
+diff --git a/test/test_http_parser.cpp b/test/test_http_parser.cpp
+index c26d1c8..6835a12 100644
+--- test/test_http_parser.cpp
++++ test/test_http_parser.cpp
+@@ -361,29 +361,6 @@ TORRENT_TEST(http_parser)
+ TEST_EQUAL(parser.headers().find("test2")->second, "bar");
+ }
+
+- // test chunked encoding
+-
+- parser.reset();
+-
+- char const* chunked_input =
+- "HTTP/1.1 200 OK\r\n"
+- "Transfer-Encoding: chunked\r\n"
+- "Content-Type: text/plain\r\n"
+- "\r\n"
+- "4\r\ntest\r\n4\r\n1234\r\n10\r\n0123456789abcdef\r\n"
+- "0\r\n\r\n";
+- received = feed_bytes(parser, chunked_input);
+-
+- TEST_EQUAL(strlen(chunked_input), 24 + 94)
+- TEST_CHECK(received == make_tuple(24, 94, false));
+- TEST_CHECK(parser.finished());
+-
+- char mutable_buffer[100];
+- memcpy(mutable_buffer, parser.get_body().begin, parser.get_body().left());
+- int len = parser.collapse_chunk_headers(mutable_buffer, parser.get_body().left());
+-
+- TEST_CHECK(std::equal(mutable_buffer, mutable_buffer + len, "test12340123456789abcdef"));
+-
+ // test url parsing
+
+ error_code ec;
+@@ -476,3 +453,119 @@ TORRENT_TEST(http_parser)
+ TEST_EQUAL(is_redirect(400), false);
+ }
+
++TORRENT_TEST(chunked_encoding)
++{
++ char const* chunked_input =
++ "HTTP/1.1 200 OK\r\n"
++ "Transfer-Encoding: chunked\r\n"
++ "Content-Type: text/plain\r\n"
++ "\r\n"
++ "4\r\ntest\r\n4\r\n1234\r\n10\r\n0123456789abcdef\r\n"
++ "0\r\n\r\n";
++
++ http_parser parser;
++ boost::tuple<int, int, bool> const received
++ = feed_bytes(parser, chunked_input);
++
++ TEST_EQUAL(strlen(chunked_input), 24 + 94)
++ TEST_CHECK(received == make_tuple(24, 94, false));
++ TEST_CHECK(parser.finished());
++
++ char mutable_buffer[100];
++ memcpy(mutable_buffer, parser.get_body().begin, parser.get_body().left());
++ int len = parser.collapse_chunk_headers(mutable_buffer, parser.get_body().left());
++
++ TEST_CHECK(std::equal(mutable_buffer, mutable_buffer + len, "test12340123456789abcdef"));
++}
++
++TORRENT_TEST(invalid_content_length)
++{
++ char const* chunked_input =
++ "HTTP/1.1 200 OK\r\n"
++ "Transfer-Encoding: chunked\r\n"
++ "Content-Length: -45345\r\n"
++ "\r\n";
++
++ http_parser parser;
++ boost::tuple<int, int, bool> const received
++ = feed_bytes(parser, chunked_input);
++
++ TEST_CHECK(boost::get<2>(received) == true);
++}
++
++TORRENT_TEST(invalid_chunked)
++{
++ char const* chunked_input =
++ "HTTP/1.1 200 OK\r\n"
++ "Transfer-Encoding: chunked\r\n"
++ "\r\n"
++ "-53465234545\r\n"
++ "foobar";
++
++ http_parser parser;
++ boost::tuple<int, int, bool> const received
++ = feed_bytes(parser, chunked_input);
++
++ TEST_CHECK(boost::get<2>(received) == true);
++}
++
++TORRENT_TEST(invalid_content_range_start)
++{
++ char const* chunked_input =
++ "HTTP/1.1 206 OK\n"
++ "Content-Range: bYTes -3-4\n"
++ "\n";
++
++ http_parser parser;
++ boost::tuple<int, int, bool> const received
++ = feed_bytes(parser, chunked_input);
++
++ TEST_CHECK(boost::get<2>(received) == true);
++}
++
++TORRENT_TEST(invalid_content_range_end)
++{
++ char const* chunked_input =
++ "HTTP/1.1 206 OK\n"
++ "Content-Range: bYTes 3--434\n"
++ "\n";
++
++ http_parser parser;
++ boost::tuple<int, int, bool> const received
++ = feed_bytes(parser, chunked_input);
++
++ TEST_CHECK(boost::get<2>(received) == true);
++}
++
++TORRENT_TEST(invalid_chunk_afl)
++{
++ boost::uint8_t const invalid_chunked_input[] = {
++ 0x48, 0x6f, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, // HoTP/1.1 200 OK
++ 0x20, 0x32, 0x30, 0x30, 0x20, 0x4f, 0x4b, 0x0d, // Cont-Length: 20
++ 0x0a, 0x43, 0x6f, 0x6e, 0x74, 0x2d, 0x4c, 0x65, // Contente: tn
++ 0x6e, 0x67, 0x74, 0x68, 0x3a, 0x20, 0x32, 0x30, // Transfer-Encoding: chunked
++ 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, //
++ 0x74, 0x65, 0x3a, 0x20, 0x74, 0x6e, 0x0d, 0x0a, //
++ 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, //
++ 0x2d, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, // -89abc9abcdef
++ 0x67, 0x3a, 0x20, 0x63, 0x68, 0x75, 0x6e, 0x6b, // �
++ 0x65, 0x64, 0x0d, 0x0a, 0x0d, 0x0d, 0x0a, 0x0d, // T����������def
++ 0x0a, 0x0a, 0x2d, 0x38, 0x39, 0x61, 0x62, 0x63, // �
++ 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x0d, // T�����������est-headyr: foobar
++ 0x0a, 0xd6, 0x0d, 0x0a, 0x54, 0xbd, 0xbd, 0xbd,
++ 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0x64,
++ 0x65, 0x66, 0x0d, 0x0a, 0xd6, 0x0d, 0x0a, 0x54,
++ 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
++ 0xbd, 0xbd, 0xbd, 0x65, 0x73, 0x74, 0x2d, 0x68,
++ 0x65, 0x61, 0x64, 0x79, 0x72, 0x3a, 0x20, 0x66,
++ 0x6f, 0x6f, 0x62, 0x61, 0x72, 0x0d, 0x0a, 0x0d,
++ 0x0a, 0x00
++ };
++
++ http_parser parser;
++ boost::tuple<int, int, bool> const received
++ = feed_bytes(parser, reinterpret_cast<char const*>(invalid_chunked_input));
++
++ TEST_CHECK(boost::get<2>(received) == true);
++}
++
diff --git a/net-p2p/libtorrent-rasterbar/files/patch-git_95e348be b/net-p2p/libtorrent-rasterbar/files/patch-git_95e348be
new file mode 100644
index 000000000000..805ff5f97883
--- /dev/null
+++ b/net-p2p/libtorrent-rasterbar/files/patch-git_95e348be
@@ -0,0 +1,132 @@
+From 95e348bef7ad92d7e26da712b4df478c8c739f87 Mon Sep 17 00:00:00 2001
+From: Arvid Norberg <arvid.norberg@gmail.com>
+Date: Fri, 29 Apr 2016 12:00:39 -0400
+Subject: [PATCH] fix name clash with 'thread' on freebsd (#664)
+
+---
+ test/dht_server.cpp | 2 +-
+ test/peer_server.cpp | 2 +-
+ test/test_alert_manager.cpp | 2 +-
+ test/test_threads.cpp | 12 ++++++------
+ test/test_time.cpp | 8 ++++----
+ test/udp_tracker.cpp | 2 +-
+ 6 files changed, 14 insertions(+), 14 deletions(-)
+
+diff --git a/test/dht_server.cpp b/test/dht_server.cpp
+index 93a3b63..84b8a34 100644
+--- test/dht_server.cpp
++++ test/dht_server.cpp
+@@ -89,7 +89,7 @@ struct dht_server
+
+ fprintf(stderr, "%s: DHT initialized on port %d\n", time_now_string(), m_port);
+
+- m_thread.reset(new thread(boost::bind(&dht_server::thread_fun, this)));
++ m_thread.reset(new libtorrent::thread(boost::bind(&dht_server::thread_fun, this)));
+ }
+
+ ~dht_server()
+diff --git a/test/peer_server.cpp b/test/peer_server.cpp
+index 315c055..8297acf 100644
+--- test/peer_server.cpp
++++ test/peer_server.cpp
+@@ -92,7 +92,7 @@ struct peer_server
+
+ fprintf(stderr, "%s: PEER peer initialized on port %d\n", time_now_string(), m_port);
+
+- m_thread.reset(new thread(boost::bind(&peer_server::thread_fun, this)));
++ m_thread.reset(new libtorrent::thread(boost::bind(&peer_server::thread_fun, this)));
+ }
+
+ ~peer_server()
+diff --git a/test/test_alert_manager.cpp b/test/test_alert_manager.cpp
+index 3432336..bf0c28f 100644
+--- test/test_alert_manager.cpp
++++ test/test_alert_manager.cpp
+@@ -262,7 +262,7 @@ TORRENT_TEST(wait_for_alert)
+ mgr.get_all(alerts, num_resume);
+
+ start = clock_type::now();
+- thread posting_thread(boost::bind(&post_torrent_added, &mgr));
++ libtorrent::thread posting_thread(boost::bind(&post_torrent_added, &mgr));
+
+ a = mgr.wait_for_alert(seconds(10));
+ end = clock_type::now();
+diff --git a/test/test_threads.cpp b/test/test_threads.cpp
+index 5c9475d..55b6010 100644
+--- test/test_threads.cpp
++++ test/test_threads.cpp
+@@ -77,11 +77,11 @@ TORRENT_TEST(threads)
+ {
+ condition_variable cond;
+ libtorrent::mutex m;
+- std::list<thread*> threads;
++ std::list<libtorrent::thread*> threads;
+ int waiting = 0;
+ for (int i = 0; i < 20; ++i)
+ {
+- threads.push_back(new thread(boost::bind(&fun, &cond, &m, &waiting, i)));
++ threads.push_back(new libtorrent::thread(boost::bind(&fun, &cond, &m, &waiting, i)));
+ }
+
+ // make sure all threads are waiting on the condition_variable
+@@ -96,7 +96,7 @@ TORRENT_TEST(threads)
+ cond.notify_all();
+ l.unlock();
+
+- for (std::list<thread*>::iterator i = threads.begin(); i != threads.end(); ++i)
++ for (std::list<libtorrent::thread*>::iterator i = threads.begin(); i != threads.end(); ++i)
+ {
+ (*i)->join();
+ delete *i;
+@@ -107,8 +107,8 @@ TORRENT_TEST(threads)
+ boost::atomic<int> c(0);
+ for (int i = 0; i < 3; ++i)
+ {
+- threads.push_back(new thread(boost::bind(&increment, &cond, &m, &waiting, &c)));
+- threads.push_back(new thread(boost::bind(&decrement, &cond, &m, &waiting, &c)));
++ threads.push_back(new libtorrent::thread(boost::bind(&increment, &cond, &m, &waiting, &c)));
++ threads.push_back(new libtorrent::thread(boost::bind(&decrement, &cond, &m, &waiting, &c)));
+ }
+
+ // make sure all threads are waiting on the condition_variable
+@@ -123,7 +123,7 @@ TORRENT_TEST(threads)
+ cond.notify_all();
+ l.unlock();
+
+- for (std::list<thread*>::iterator i = threads.begin(); i != threads.end(); ++i)
++ for (std::list<libtorrent::thread*>::iterator i = threads.begin(); i != threads.end(); ++i)
+ {
+ (*i)->join();
+ delete *i;
+diff --git a/test/test_time.cpp b/test/test_time.cpp
+index 817dd1d..f8ddd30 100644
+--- test/test_time.cpp
++++ test/test_time.cpp
+@@ -83,10 +83,10 @@ TORRENT_TEST(time)
+
+ mutex m;
+ condition_variable cv;
+- thread t1(boost::bind(&check_timer_loop, boost::ref(m), boost::ref(last), boost::ref(cv)));
+- thread t2(boost::bind(&check_timer_loop, boost::ref(m), boost::ref(last), boost::ref(cv)));
+- thread t3(boost::bind(&check_timer_loop, boost::ref(m), boost::ref(last), boost::ref(cv)));
+- thread t4(boost::bind(&check_timer_loop, boost::ref(m), boost::ref(last), boost::ref(cv)));
++ libtorrent::thread t1(boost::bind(&check_timer_loop, boost::ref(m), boost::ref(last), boost::ref(cv)));
++ libtorrent::thread t2(boost::bind(&check_timer_loop, boost::ref(m), boost::ref(last), boost::ref(cv)));
++ libtorrent::thread t3(boost::bind(&check_timer_loop, boost::ref(m), boost::ref(last), boost::ref(cv)));
++ libtorrent::thread t4(boost::bind(&check_timer_loop, boost::ref(m), boost::ref(last), boost::ref(cv)));
+
+ test_sleep(100);
+
+diff --git a/test/udp_tracker.cpp b/test/udp_tracker.cpp
+index bb63434..5d5a59f 100644
+--- test/udp_tracker.cpp
++++ test/udp_tracker.cpp
+@@ -171,7 +171,7 @@ struct udp_tracker
+
+ fprintf(stderr, "%s: UDP tracker initialized on port %d\n", time_now_string(), m_port);
+
+- m_thread.reset(new thread(boost::bind(&udp_tracker::thread_fun, this)));
++ m_thread.reset(new libtorrent::thread(boost::bind(&udp_tracker::thread_fun, this)));
+ }
+
+ void stop()
diff --git a/net-p2p/libtorrent-rasterbar/files/patch-include-libtorrent-config.hpp b/net-p2p/libtorrent-rasterbar/files/patch-include-libtorrent-config.hpp
index e1ab293b3062..93cd9bfb602e 100644
--- a/net-p2p/libtorrent-rasterbar/files/patch-include-libtorrent-config.hpp
+++ b/net-p2p/libtorrent-rasterbar/files/patch-include-libtorrent-config.hpp
@@ -1,15 +1,15 @@
---- include/libtorrent/config.hpp.orig 2014-12-05 01:00:07 UTC
+--- include/libtorrent/config.hpp.orig 2016-04-10 21:39:14 UTC
+++ include/libtorrent/config.hpp
-@@ -166,12 +166,6 @@ POSSIBILITY OF SUCH DAMAGE.
-
- #endif // __APPLE__
+@@ -180,12 +180,6 @@ POSSIBILITY OF SUCH DAMAGE.
+ #define TORRENT_USE_EXECINFO 1
+ #endif
--#else
+-#else // __APPLE__
-// FreeBSD has a reasonable iconv signature
-// unless we're on glibc
-#ifndef __GLIBC__
-# define TORRENT_ICONV_ARG (const char**)
-#endif
- #endif
- #define TORRENT_HAS_FALLOCATE 0
- #define TORRENT_USE_IFADDRS 1
+ #endif // __APPLE__
+
+ #define TORRENT_HAVE_MMAP 1
diff --git a/net-p2p/libtorrent-rasterbar/files/patch-src_lazy__bdecode.cpp b/net-p2p/libtorrent-rasterbar/files/patch-src_lazy__bdecode.cpp
deleted file mode 100644
index b9edb7711d93..000000000000
--- a/net-p2p/libtorrent-rasterbar/files/patch-src_lazy__bdecode.cpp
+++ /dev/null
@@ -1,12 +0,0 @@
---- src/lazy_bdecode.cpp.orig 2014-12-05 01:00:07 UTC
-+++ src/lazy_bdecode.cpp
-@@ -30,6 +30,9 @@ POSSIBILITY OF SUCH DAMAGE.
-
- */
-
-+#define __STDC_LIMIT_MACROS
-+#include <stdint.h>
-+
- #include "libtorrent/config.hpp"
- #include "libtorrent/lazy_entry.hpp"
- #include <cstring>
diff --git a/net-p2p/libtorrent-rasterbar/files/patch-src_utp__stream.cpp b/net-p2p/libtorrent-rasterbar/files/patch-src_utp__stream.cpp
deleted file mode 100644
index 661582fb3267..000000000000
--- a/net-p2p/libtorrent-rasterbar/files/patch-src_utp__stream.cpp
+++ /dev/null
@@ -1,11 +0,0 @@
---- src/utp_stream.cpp.orig 2014-12-05 01:00:07 UTC
-+++ src/utp_stream.cpp
-@@ -30,6 +30,8 @@ POSSIBILITY OF SUCH DAMAGE.
-
- */
-
-+#define __STDC_LIMIT_MACROS
-+#include <stdint.h>
- #include "libtorrent/config.hpp"
- #include "libtorrent/utp_stream.hpp"
- #include "libtorrent/sliding_average.hpp"
diff --git a/net-p2p/libtorrent-rasterbar/pkg-descr b/net-p2p/libtorrent-rasterbar/pkg-descr
index 0507e0a054a6..a36034d2a81f 100644
--- a/net-p2p/libtorrent-rasterbar/pkg-descr
+++ b/net-p2p/libtorrent-rasterbar/pkg-descr
@@ -1,10 +1,10 @@
-libtorrent is a C++ library that aims to be a good alternative to all the
-other bittorrent implementations around. It is a library and not a full
-featured client, although it comes with a working example client.
+libtorrent is an open source C++ library implementing the BitTorrent
+protocol, along with most popular extensions, making it suitable for
+real world deployment. It is configurable to be able to fit both
+servers and embedded devices.
+
+The main goals of libtorrent are to be efficient and easy to use.
-The main goals of libtorrent are to be cpu efficient, memory efficient and
-very easy to use.
+NB: this is NOT the same library as the net-p2p/libtorrent port!
-Note that this is NOT the same library as the libtorrent port!
-
-WWW: http://www.rasterbar.com/products/libtorrent/
+WWW: http://libtorrent.org/
diff --git a/net-p2p/libtorrent-rasterbar/pkg-plist b/net-p2p/libtorrent-rasterbar/pkg-plist
index e60f7315bb14..bf4115eb936e 100644
--- a/net-p2p/libtorrent-rasterbar/pkg-plist
+++ b/net-p2p/libtorrent-rasterbar/pkg-plist
@@ -2,43 +2,65 @@ include/libtorrent/ConvertUTF.h
include/libtorrent/add_torrent_params.hpp
include/libtorrent/address.hpp
include/libtorrent/alert.hpp
-include/libtorrent/alert_dispatcher.hpp
include/libtorrent/alert_manager.hpp
+include/libtorrent/alert_observer.hpp
include/libtorrent/alert_types.hpp
include/libtorrent/alloca.hpp
include/libtorrent/allocator.hpp
+include/libtorrent/announce_entry.hpp
include/libtorrent/assert.hpp
+include/libtorrent/aux_/alert_manager_variadic_emplace.hpp
+include/libtorrent/aux_/allocating_handler.hpp
+include/libtorrent/aux_/byteswap.hpp
+include/libtorrent/aux_/cpuid.hpp
+include/libtorrent/aux_/disable_warnings_pop.hpp
+include/libtorrent/aux_/disable_warnings_push.hpp
+include/libtorrent/aux_/escape_string.hpp
+include/libtorrent/aux_/file_progress.hpp
+include/libtorrent/aux_/merkle.hpp
+include/libtorrent/aux_/openssl.hpp
+include/libtorrent/aux_/proxy_settings.hpp
+include/libtorrent/aux_/session_call.hpp
include/libtorrent/aux_/session_impl.hpp
+include/libtorrent/aux_/session_interface.hpp
+include/libtorrent/aux_/session_settings.hpp
+include/libtorrent/aux_/time.hpp
include/libtorrent/bandwidth_limit.hpp
include/libtorrent/bandwidth_manager.hpp
include/libtorrent/bandwidth_queue_entry.hpp
include/libtorrent/bandwidth_socket.hpp
+include/libtorrent/bdecode.hpp
include/libtorrent/bencode.hpp
include/libtorrent/bitfield.hpp
+include/libtorrent/block_cache.hpp
include/libtorrent/bloom_filter.hpp
include/libtorrent/broadcast_socket.hpp
include/libtorrent/bt_peer_connection.hpp
include/libtorrent/buffer.hpp
include/libtorrent/build_config.hpp
include/libtorrent/chained_buffer.hpp
+include/libtorrent/choker.hpp
+include/libtorrent/close_reason.hpp
include/libtorrent/config.hpp
-include/libtorrent/connection_queue.hpp
include/libtorrent/copy_ptr.hpp
+include/libtorrent/crc32c.hpp
include/libtorrent/create_torrent.hpp
include/libtorrent/deadline_timer.hpp
include/libtorrent/debug.hpp
include/libtorrent/disk_buffer_holder.hpp
include/libtorrent/disk_buffer_pool.hpp
+include/libtorrent/disk_interface.hpp
+include/libtorrent/disk_io_job.hpp
include/libtorrent/disk_io_thread.hpp
+include/libtorrent/disk_job_pool.hpp
+include/libtorrent/disk_observer.hpp
include/libtorrent/ed25519.hpp
include/libtorrent/entry.hpp
include/libtorrent/enum_net.hpp
include/libtorrent/error.hpp
include/libtorrent/error_code.hpp
-include/libtorrent/escape_string.hpp
include/libtorrent/export.hpp
include/libtorrent/extensions.hpp
-include/libtorrent/extensions/logger.hpp
include/libtorrent/extensions/lt_trackers.hpp
include/libtorrent/extensions/metadata_transfer.hpp
include/libtorrent/extensions/smart_ban.hpp
@@ -50,6 +72,8 @@ include/libtorrent/file_storage.hpp
include/libtorrent/fingerprint.hpp
include/libtorrent/gzip.hpp
include/libtorrent/hasher.hpp
+include/libtorrent/heterogeneous_queue.hpp
+include/libtorrent/hex.hpp
include/libtorrent/http_connection.hpp
include/libtorrent/http_parser.hpp
include/libtorrent/http_seed_connection.hpp
@@ -58,7 +82,6 @@ include/libtorrent/http_tracker_connection.hpp
include/libtorrent/i2p_stream.hpp
include/libtorrent/identify_client.hpp
include/libtorrent/instantiate_connection.hpp
-include/libtorrent/intrusive_ptr_base.hpp
include/libtorrent/invariant_check.hpp
include/libtorrent/io.hpp
include/libtorrent/io_service.hpp
@@ -66,48 +89,69 @@ include/libtorrent/io_service_fwd.hpp
include/libtorrent/ip_filter.hpp
include/libtorrent/ip_voter.hpp
include/libtorrent/kademlia/dht_observer.hpp
+include/libtorrent/kademlia/dht_storage.hpp
include/libtorrent/kademlia/dht_tracker.hpp
+include/libtorrent/kademlia/direct_request.hpp
+include/libtorrent/kademlia/dos_blocker.hpp
include/libtorrent/kademlia/find_data.hpp
include/libtorrent/kademlia/get_item.hpp
include/libtorrent/kademlia/get_peers.hpp
include/libtorrent/kademlia/item.hpp
-include/libtorrent/kademlia/logging.hpp
include/libtorrent/kademlia/msg.hpp
include/libtorrent/kademlia/node.hpp
include/libtorrent/kademlia/node_entry.hpp
include/libtorrent/kademlia/node_id.hpp
include/libtorrent/kademlia/observer.hpp
+include/libtorrent/kademlia/put_data.hpp
include/libtorrent/kademlia/refresh.hpp
include/libtorrent/kademlia/routing_table.hpp
include/libtorrent/kademlia/rpc_manager.hpp
include/libtorrent/kademlia/traversal_algorithm.hpp
include/libtorrent/lazy_entry.hpp
+include/libtorrent/link.hpp
+include/libtorrent/linked_list.hpp
include/libtorrent/lsd.hpp
include/libtorrent/magnet_uri.hpp
include/libtorrent/max.hpp
include/libtorrent/natpmp.hpp
+include/libtorrent/network_thread_pool.hpp
+include/libtorrent/operations.hpp
include/libtorrent/packet_buffer.hpp
include/libtorrent/parse_url.hpp
+include/libtorrent/part_file.hpp
include/libtorrent/pe_crypto.hpp
include/libtorrent/peer.hpp
+include/libtorrent/peer_class.hpp
+include/libtorrent/peer_class_set.hpp
+include/libtorrent/peer_class_type_filter.hpp
include/libtorrent/peer_connection.hpp
+include/libtorrent/peer_connection_handle.hpp
+include/libtorrent/peer_connection_interface.hpp
include/libtorrent/peer_id.hpp
include/libtorrent/peer_info.hpp
+include/libtorrent/peer_list.hpp
include/libtorrent/peer_request.hpp
+include/libtorrent/performance_counters.hpp
include/libtorrent/piece_block_progress.hpp
include/libtorrent/piece_picker.hpp
-include/libtorrent/policy.hpp
+include/libtorrent/platform_util.hpp
include/libtorrent/proxy_base.hpp
-include/libtorrent/ptime.hpp
include/libtorrent/puff.hpp
include/libtorrent/random.hpp
+include/libtorrent/receive_buffer.hpp
+include/libtorrent/request_blocks.hpp
+include/libtorrent/resolve_links.hpp
+include/libtorrent/resolver.hpp
+include/libtorrent/resolver_interface.hpp
include/libtorrent/rss.hpp
include/libtorrent/session.hpp
+include/libtorrent/session_handle.hpp
include/libtorrent/session_settings.hpp
+include/libtorrent/session_stats.hpp
include/libtorrent/session_status.hpp
-include/libtorrent/settings.hpp
+include/libtorrent/settings_pack.hpp
+include/libtorrent/sha1.hpp
include/libtorrent/sha1_hash.hpp
-include/libtorrent/size_type.hpp
include/libtorrent/sliding_average.hpp
include/libtorrent/socket.hpp
include/libtorrent/socket_io.hpp
@@ -115,11 +159,15 @@ include/libtorrent/socket_type.hpp
include/libtorrent/socket_type_fwd.hpp
include/libtorrent/socks5_stream.hpp
include/libtorrent/ssl_stream.hpp
+include/libtorrent/stack_allocator.hpp
include/libtorrent/stat.hpp
+include/libtorrent/stat_cache.hpp
include/libtorrent/storage.hpp
include/libtorrent/storage_defs.hpp
include/libtorrent/string_util.hpp
+include/libtorrent/tailqueue.hpp
include/libtorrent/thread.hpp
+include/libtorrent/thread_pool.hpp
include/libtorrent/time.hpp
include/libtorrent/timestamp_history.hpp
include/libtorrent/tommath.h
@@ -128,14 +176,19 @@ include/libtorrent/tommath_superclass.h
include/libtorrent/torrent.hpp
include/libtorrent/torrent_handle.hpp
include/libtorrent/torrent_info.hpp
+include/libtorrent/torrent_peer.hpp
+include/libtorrent/torrent_peer_allocator.hpp
+include/libtorrent/torrent_status.hpp
include/libtorrent/tracker_manager.hpp
include/libtorrent/udp_socket.hpp
include/libtorrent/udp_tracker_connection.hpp
+include/libtorrent/uncork_interface.hpp
include/libtorrent/union_endpoint.hpp
include/libtorrent/upnp.hpp
include/libtorrent/utf8.hpp
include/libtorrent/utp_socket_manager.hpp
include/libtorrent/utp_stream.hpp
+include/libtorrent/vector_utils.hpp
include/libtorrent/version.hpp
include/libtorrent/web_connection_base.hpp
include/libtorrent/web_peer_connection.hpp
@@ -144,103 +197,3 @@ lib/libtorrent-rasterbar.so
lib/libtorrent-rasterbar.so.%%SHLIB_VER%%
lib/libtorrent-rasterbar.so.%%SHLIB_VER%%.0.0
libdata/pkgconfig/libtorrent-rasterbar.pc
-%%PORTDOCS%%%%DOCSDIR%%/AUTHORS
-%%PORTDOCS%%%%DOCSDIR%%/ChangeLog
-%%PORTDOCS%%%%DOCSDIR%%/docs/building.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/building.rst
-%%PORTDOCS%%%%DOCSDIR%%/docs/client_test.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/client_test.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/client_test.rst
-%%PORTDOCS%%%%DOCSDIR%%/docs/complete_bit_prefixes.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/contributing.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/contributing.rst
-%%PORTDOCS%%%%DOCSDIR%%/docs/cwnd.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/cwnd_thumb.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/delays.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/delays_thumb.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/dht_extensions.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/dht_extensions.rst
-%%PORTDOCS%%%%DOCSDIR%%/docs/dht_rss.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/dht_rss.rst
-%%PORTDOCS%%%%DOCSDIR%%/docs/dht_sec.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/dht_sec.rst
-%%PORTDOCS%%%%DOCSDIR%%/docs/dht_store.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/dht_store.rst
-%%PORTDOCS%%%%DOCSDIR%%/docs/disk_access.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/disk_access_elevator.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/disk_access_no_elevator.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/disk_buffer.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/disk_buffer_before_optimization.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/disk_buffer_sample.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/disk_io.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/examples.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/examples.rst
-%%PORTDOCS%%%%DOCSDIR%%/docs/extension_protocol.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/extension_protocol.rst
-%%PORTDOCS%%%%DOCSDIR%%/docs/features.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/features.rst
-%%PORTDOCS%%%%DOCSDIR%%/docs/hacking.diagram
-%%PORTDOCS%%%%DOCSDIR%%/docs/hacking.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/hacking.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/hash_distribution.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/im_thumb.jpg
-%%PORTDOCS%%%%DOCSDIR%%/docs/img/bg.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/img/blue_bottom.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/img/blue_top.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/img/dotline.gif
-%%PORTDOCS%%%%DOCSDIR%%/docs/img/minus.gif
-%%PORTDOCS%%%%DOCSDIR%%/docs/img/orange.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/index.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/index.rst
-%%PORTDOCS%%%%DOCSDIR%%/docs/ip_id_v4.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/ip_id_v6.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/manual-ref.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/manual-ref.rst
-%%PORTDOCS%%%%DOCSDIR%%/docs/merkle_tree.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/our_delay_base.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/our_delay_base_thumb.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/projects.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/projects.rst
-%%PORTDOCS%%%%DOCSDIR%%/docs/python_binding.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/python_binding.rst
-%%PORTDOCS%%%%DOCSDIR%%/docs/read_disk_buffers.diagram
-%%PORTDOCS%%%%DOCSDIR%%/docs/read_disk_buffers.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/reference-Alerts.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/reference-Bencoding.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/reference-Core.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/reference-Create_Torrents.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/reference-Custom_Storage.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/reference-Error_Codes.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/reference-Filter.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/reference-Plugins.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/reference-RSS.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/reference-Session.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/reference-Settings.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/reference-Storage.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/reference-String.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/reference-Time.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/reference-Utility.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/reference.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/rst.css
-%%PORTDOCS%%%%DOCSDIR%%/docs/session_stats_peers.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/storage.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/streaming.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/streaming.rst
-%%PORTDOCS%%%%DOCSDIR%%/docs/style.css
-%%PORTDOCS%%%%DOCSDIR%%/docs/todo.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/troubleshooting.dot
-%%PORTDOCS%%%%DOCSDIR%%/docs/troubleshooting.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/troubleshooting.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/troubleshooting.rst
-%%PORTDOCS%%%%DOCSDIR%%/docs/troubleshooting_thumb.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/tuning.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/tuning.rst
-%%PORTDOCS%%%%DOCSDIR%%/docs/udp_tracker_protocol.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/udp_tracker_protocol.rst
-%%PORTDOCS%%%%DOCSDIR%%/docs/utp.html
-%%PORTDOCS%%%%DOCSDIR%%/docs/utp.rst
-%%PORTDOCS%%%%DOCSDIR%%/docs/utp_stack.diagram
-%%PORTDOCS%%%%DOCSDIR%%/docs/utp_stack.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/write_disk_buffers.diagram
-%%PORTDOCS%%%%DOCSDIR%%/docs/write_disk_buffers.png
-%%PORTDOCS%%%%DOCSDIR%%/docs/ziptorrent_thumb.gif