Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 19 Aug 2016 14:22:46 +0000 (UTC)
From:      Dmitry Marakasov <amdmi3@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r420473 - in head/net-p2p: libtorrent-rasterbar libtorrent-rasterbar-python libtorrent-rasterbar/files
Message-ID:  <201608191422.u7JEMkOJ050479@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: amdmi3
Date: Fri Aug 19 14:22:45 2016
New Revision: 420473
URL: https://svnweb.freebsd.org/changeset/ports/420473

Log:
  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

Added:
  head/net-p2p/libtorrent-rasterbar/files/patch-git_3624ce6c   (contents, props changed)
  head/net-p2p/libtorrent-rasterbar/files/patch-git_95e348be   (contents, props changed)
Deleted:
  head/net-p2p/libtorrent-rasterbar/files/patch-src_lazy__bdecode.cpp
  head/net-p2p/libtorrent-rasterbar/files/patch-src_utp__stream.cpp
Modified:
  head/net-p2p/libtorrent-rasterbar-python/Makefile
  head/net-p2p/libtorrent-rasterbar/Makefile
  head/net-p2p/libtorrent-rasterbar/distinfo
  head/net-p2p/libtorrent-rasterbar/files/patch-include-libtorrent-config.hpp
  head/net-p2p/libtorrent-rasterbar/pkg-descr
  head/net-p2p/libtorrent-rasterbar/pkg-plist

Modified: head/net-p2p/libtorrent-rasterbar-python/Makefile
==============================================================================
--- head/net-p2p/libtorrent-rasterbar-python/Makefile	Fri Aug 19 14:06:36 2016	(r420472)
+++ head/net-p2p/libtorrent-rasterbar-python/Makefile	Fri Aug 19 14:22:45 2016	(r420473)
@@ -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}"
 

Modified: head/net-p2p/libtorrent-rasterbar/Makefile
==============================================================================
--- head/net-p2p/libtorrent-rasterbar/Makefile	Fri Aug 19 14:06:36 2016	(r420472)
+++ head/net-p2p/libtorrent-rasterbar/Makefile	Fri Aug 19 14:22:45 2016	(r420473)
@@ -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>

Modified: head/net-p2p/libtorrent-rasterbar/distinfo
==============================================================================
--- head/net-p2p/libtorrent-rasterbar/distinfo	Fri Aug 19 14:06:36 2016	(r420472)
+++ head/net-p2p/libtorrent-rasterbar/distinfo	Fri Aug 19 14:22:45 2016	(r420473)
@@ -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

Added: head/net-p2p/libtorrent-rasterbar/files/patch-git_3624ce6c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net-p2p/libtorrent-rasterbar/files/patch-git_3624ce6c	Fri Aug 19 14:22:45 2016	(r420473)
@@ -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);
++}
++

Added: head/net-p2p/libtorrent-rasterbar/files/patch-git_95e348be
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net-p2p/libtorrent-rasterbar/files/patch-git_95e348be	Fri Aug 19 14:22:45 2016	(r420473)
@@ -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()

Modified: head/net-p2p/libtorrent-rasterbar/files/patch-include-libtorrent-config.hpp
==============================================================================
--- head/net-p2p/libtorrent-rasterbar/files/patch-include-libtorrent-config.hpp	Fri Aug 19 14:06:36 2016	(r420472)
+++ head/net-p2p/libtorrent-rasterbar/files/patch-include-libtorrent-config.hpp	Fri Aug 19 14:22:45 2016	(r420473)
@@ -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

Modified: head/net-p2p/libtorrent-rasterbar/pkg-descr
==============================================================================
--- head/net-p2p/libtorrent-rasterbar/pkg-descr	Fri Aug 19 14:06:36 2016	(r420472)
+++ head/net-p2p/libtorrent-rasterbar/pkg-descr	Fri Aug 19 14:22:45 2016	(r420473)
@@ -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/

Modified: head/net-p2p/libtorrent-rasterbar/pkg-plist
==============================================================================
--- head/net-p2p/libtorrent-rasterbar/pkg-plist	Fri Aug 19 14:06:36 2016	(r420472)
+++ head/net-p2p/libtorrent-rasterbar/pkg-plist	Fri Aug 19 14:22:45 2016	(r420473)
@@ -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_connecti
 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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201608191422.u7JEMkOJ050479>