merged RC_1_1 into master

This commit is contained in:
arvidn 2017-09-06 13:51:36 +02:00
commit 9bf0658090
4 changed files with 50 additions and 48 deletions

View File

@ -77,6 +77,8 @@
* resume data no longer has timestamps of files * resume data no longer has timestamps of files
* require C++11 to build libtorrent * require C++11 to build libtorrent
1.1.5 release
* fix IPv6 tracker support by performing the second announce in more cases * fix IPv6 tracker support by performing the second announce in more cases
* fix utf-8 encoding check in torrent parser * fix utf-8 encoding check in torrent parser
* fix infinite loop when parsing maliciously crafted torrents * fix infinite loop when parsing maliciously crafted torrents

View File

@ -169,7 +169,7 @@ AC_ARG_ENABLE(
[logging], [logging],
[AS_HELP_STRING( [AS_HELP_STRING(
[--enable-logging], [--enable-logging],
[enable logging support, enabled by alert mask [default=yes]])], [enable logging alerts [default=yes]])],
[[ARG_ENABLE_LOGGING=$enableval]], [[ARG_ENABLE_LOGGING=$enableval]],
[[ARG_ENABLE_LOGGING=yes]] [[ARG_ENABLE_LOGGING=yes]]
) )
@ -339,7 +339,7 @@ AS_CASE(["$ARG_ENABLE_LOGGING"],
], ],
["no"|"none"], [ ["no"|"none"], [
AC_MSG_RESULT([no]) AC_MSG_RESULT([no])
AC_DEFINE([TORRENT_DISABLE_LOGGING],[1],[Define to enable support for logging alerts]) AC_DEFINE([TORRENT_DISABLE_LOGGING],[1],[Define to disable support for logging alerts])
COMPILETIME_OPTIONS="$COMPILETIME_OPTIONS -DTORRENT_DISABLE_LOGGING " COMPILETIME_OPTIONS="$COMPILETIME_OPTIONS -DTORRENT_DISABLE_LOGGING "
], ],
[AC_MSG_RESULT([$ARG_ENABLE_LOGGING]) [AC_MSG_RESULT([$ARG_ENABLE_LOGGING])
@ -383,7 +383,7 @@ AS_CASE(["$ARG_ENABLE_DHT"],
COMPILETIME_OPTIONS="$COMPILETIME_OPTIONS -DTORRENT_DISABLE_DHT " COMPILETIME_OPTIONS="$COMPILETIME_OPTIONS -DTORRENT_DISABLE_DHT "
], ],
[AC_MSG_RESULT([$ARG_ENABLE_DHT]) [AC_MSG_RESULT([$ARG_ENABLE_DHT])
AC_MSG_ERROR([Unknown option "$ARG_ENABLE_DHT". Use either "yes", "no" or "logging".])] AC_MSG_ERROR([Unknown option "$ARG_ENABLE_DHT". Use either "yes" or "no".])]
) )
AS_IF([test "x$ac_cv_hidden_visibility_attribute" = "xyes"], [ AS_IF([test "x$ac_cv_hidden_visibility_attribute" = "xyes"], [
@ -570,7 +570,7 @@ Build options:
deprecated functions: ${ARG_ENABLE_DEPRECATED:-yes} deprecated functions: ${ARG_ENABLE_DEPRECATED:-yes}
debug build: ${ARG_ENABLE_DEBUG:-no} debug build: ${ARG_ENABLE_DEBUG:-no}
invariant checks: ${ARG_ENABLE_INVARIANT:-no} invariant checks: ${ARG_ENABLE_INVARIANT:-no}
logging support: ${ARG_ENABLE_LOGGING:-no} logging support: ${ARG_ENABLE_LOGGING:-yes}
Features: Features:
encryption support: ${ARG_ENABLE_ENCRYPTION:-yes} encryption support: ${ARG_ENABLE_ENCRYPTION:-yes}

View File

@ -12,10 +12,9 @@ libtorrent manual
downloading and building downloading and building
======================== ========================
To acquire the latest version of libtorrent, you'll have to grab it from SVN. To download the latest version of libtorrent, clone the `github repo`__.
You'll find instructions on how to do this here__ (see subversion access).
__ http://sourceforge.net/svn/?group_id=79942 __ https://github.com/arvidn/libtorrent
The build systems supported "out of the box" in libtorrent are boost-build v2 The build systems supported "out of the box" in libtorrent are boost-build v2
(BBv2) and autotools (for unix-like systems). If you still can't build after (BBv2) and autotools (for unix-like systems). If you still can't build after
@ -38,15 +37,18 @@ IRC channel on ``irc.freenode.net``.
configuration options in the pkg-config file. Always use pkg-config configuration options in the pkg-config file. Always use pkg-config
when linking against libtorrent. when linking against libtorrent.
building from svn building from git
----------------- -----------------
To build libtorrent from svn you need to check out the libtorrent sources from To build libtorrent from git you need to clone the libtorrent repo from
sourceforge. If you downloaded a release tarball, you can skip this section. github. If you downloaded a release `tarball`__, you can skip this section.
To check out libtorrent follow these instructions__. __ https://github.com/arvidn/libtorrent/releases/latest
::
git clone https://github.com/arvidn/libtorrent.git
__ http://sourceforge.net/svn/?group_id=79942
building with BBv2 building with BBv2
------------------ ------------------
@ -75,7 +77,7 @@ You'll find boost here__.
__ http://sourceforge.net/project/showfiles.php?group_id=7586&package_id=8041&release_id=619445 __ http://sourceforge.net/project/showfiles.php?group_id=7586&package_id=8041&release_id=619445
Extract the archive to some directory where you want it. For the sake of this Extract the archive to some directory where you want it. For the sake of this
guide, let's assume you extract the package to ``c:\boost_1_55_0`` (I'm using guide, let's assume you extract the package to ``c:\boost_1_64_0`` (I'm using
a windows path in this example since if you're on linux/unix you're more likely a windows path in this example since if you're on linux/unix you're more likely
to use the autotools). You'll need at least version 1.49 of the boost library to use the autotools). You'll need at least version 1.49 of the boost library
in order to build libtorrent. in order to build libtorrent.
@ -86,7 +88,7 @@ Step 2: Setup BBv2
First you need to build ``bjam``. You do this by opening a terminal (In First you need to build ``bjam``. You do this by opening a terminal (In
windows, run ``cmd``). Change directory to windows, run ``cmd``). Change directory to
``c:\boost_1_55_0\tools\jam\src``. Then run the script called ``c:\boost_1_64_0\tools\jam\src``. Then run the script called
``build.bat`` or ``build.sh`` on a unix system. This will build ``bjam`` and ``build.bat`` or ``build.sh`` on a unix system. This will build ``bjam`` and
place it in a directory starting with ``bin.`` and then have the name of your place it in a directory starting with ``bin.`` and then have the name of your
platform. Copy the ``bjam.exe`` (or ``bjam`` on a unix system) to a place platform. Copy the ``bjam.exe`` (or ``bjam`` on a unix system) to a place
@ -101,16 +103,16 @@ set the environment variable ``BOOST_BUILD_PATH``. This is the path that tells
``bjam`` where it can find boost-build, your configuration file and all the ``bjam`` where it can find boost-build, your configuration file and all the
toolsets (descriptions used by boost-build to know how to use different toolsets (descriptions used by boost-build to know how to use different
compilers on different platforms). Assuming the boost install path above, set compilers on different platforms). Assuming the boost install path above, set
it to ``c:\boost_1_55_0\tools\build\v2``. it to ``c:\boost_1_64_0\tools\build\v2``.
To set an environment variable in windows, type for example:: To set an environment variable in windows, type for example::
set BOOST_BUILD_PATH=c:\boost_1_55_0\tools\build\v2 set BOOST_BUILD_PATH=c:\boost_1_64_0\tools\build\v2
In a terminal window. In a terminal window.
The last thing to do to complete the setup of BBv2 is to modify your The last thing to do to complete the setup of BBv2 is to modify your
``user-config.jam`` file. It is located in ``c:\boost_1_55_0\tools\build\v2``. ``user-config.jam`` file. It is located in ``c:\boost_1_64_0\tools\build\v2``.
Depending on your platform and which compiler you're using, you should add a Depending on your platform and which compiler you're using, you should add a
line for each compiler and compiler version you have installed on your system line for each compiler and compiler version you have installed on your system
that you want to be able to use with BBv2. For example, if you're using that you want to be able to use with BBv2. For example, if you're using
@ -148,7 +150,7 @@ Step 3: Building libtorrent
When building libtorrent, the ``Jamfile`` expects the environment variable When building libtorrent, the ``Jamfile`` expects the environment variable
``BOOST_ROOT`` to be set to the boost installation directory. It uses this to ``BOOST_ROOT`` to be set to the boost installation directory. It uses this to
find the boost libraries it depends on, so they can be built and their headers find the boost libraries it depends on, so they can be built and their headers
files found. So, set this to ``c:\boost_1_55_0``. You only need this if you're files found. So, set this to ``c:\boost_1_64_0``. You only need this if you're
building against a source distribution of boost. building against a source distribution of boost.
Then the only thing left is simply to invoke ``bjam``. If you want to specify Then the only thing left is simply to invoke ``bjam``. If you want to specify
@ -224,8 +226,8 @@ from a cygwin terminal, you'll have to run it from a ``cmd`` terminal. The same
cygwin, if you're building with gcc in cygwin you'll have to run it from a cygwin terminal. cygwin, if you're building with gcc in cygwin you'll have to run it from a cygwin terminal.
Also, make sure the paths are correct in the different environments. In cygwin, the paths Also, make sure the paths are correct in the different environments. In cygwin, the paths
(``BOOST_BUILD_PATH`` and ``BOOST_ROOT``) should be in the typical unix-format (e.g. (``BOOST_BUILD_PATH`` and ``BOOST_ROOT``) should be in the typical unix-format (e.g.
``/cygdrive/c/boost_1_55_0``). In the windows environment, they should have the typical ``/cygdrive/c/boost_1_64_0``). In the windows environment, they should have the typical
windows format (``c:/boost_1_55_0``). windows format (``c:/boost_1_64_0``).
.. note:: .. note::
In Jamfiles, spaces are separators. It's typically easiest to avoid spaces In Jamfiles, spaces are separators. It's typically easiest to avoid spaces
@ -384,12 +386,12 @@ building with autotools
First of all, you need to install ``automake`` and ``autoconf``. Many First of all, you need to install ``automake`` and ``autoconf``. Many
unix/linux systems comes with these preinstalled. unix/linux systems comes with these preinstalled.
The prerequisites for building libtorrent are boost.thread, boost.date_time The prerequisites for building libtorrent are boost.system, boost.chrono and
and boost.filesystem. Those are the *compiled* boost libraries needed. The boost.random. Those are the *compiled* boost libraries needed. The headers-only
headers-only libraries needed include (but is not necessarily limited to) libraries needed include (but is not necessarily limited to) boost.bind,
boost.bind, boost.ref, boost.multi_index, boost.optional, boost.lexical_cast, boost.ref, boost.multi_index, boost.optional, boost.lexical_cast, boost.integer,
boost.integer, boost.iterator, boost.tuple, boost.array, boost.function, boost.iterator, boost.tuple, boost.array, boost.function, boost.smart_ptr,
boost.smart_ptr, boost.preprocessor, boost.static_assert. boost.preprocessor, boost.static_assert.
If you want to build the ``client_test`` example, you'll also need boost.regex If you want to build the ``client_test`` example, you'll also need boost.regex
and boost.program_options. and boost.program_options.
@ -448,12 +450,14 @@ the suffix ``mt``.
You know that the boost libraries were found if you see the following output You know that the boost libraries were found if you see the following output
from the configure script:: from the configure script::
checking whether the Boost::DateTime library is available... yes Checking for boost libraries:
checking for main in -lboost_date_time... yes checking for boostlib >= 1.53... yes
checking whether the Boost::Filesystem library is available... yes checking whether the Boost::System library is available... yes
checking for main in -lboost_filesystem... yes checking for exit in -lboost_system... yes
checking whether the Boost::Thread library is available... yes checking whether the Boost::Chrono library is available... yes
checking for main in -lboost_thread... yes checking for exit in -lboost_chrono-mt... yes
checking whether the Boost::Random library is available... yes
checking for exit in -lboost_random-mt... yes
Another possible source of problems may be if the path to your libtorrent Another possible source of problems may be if the path to your libtorrent
directory contains spaces. Make sure you either rename the directories with directory contains spaces. Make sure you either rename the directories with
@ -528,10 +532,6 @@ defines you can use to control the build.
| | peer_log_alert. With this build flag, you | | | peer_log_alert. With this build flag, you |
| | cannot enable those alerts. | | | cannot enable those alerts. |
+----------------------------------------+-------------------------------------------------+ +----------------------------------------+-------------------------------------------------+
| ``TORRENT_STORAGE_DEBUG`` | This will enable extra expensive invariant |
| | checks in the storage, including logging of |
| | piece sorting. |
+----------------------------------------+-------------------------------------------------+
| ``TORRENT_DISABLE_MUTABLE_TORRENTS`` | Disables mutable torrent support (`BEP 38`_) | | ``TORRENT_DISABLE_MUTABLE_TORRENTS`` | Disables mutable torrent support (`BEP 38`_) |
+----------------------------------------+-------------------------------------------------+ +----------------------------------------+-------------------------------------------------+
| ``TORRENT_LINKING_SHARED`` | If this is defined when including the | | ``TORRENT_LINKING_SHARED`` | If this is defined when including the |

View File

@ -13,7 +13,7 @@ libtorrent version 1.2 comes with some significant updates in the API.
This document summarizes the changes affecting library users. This document summarizes the changes affecting library users.
C++98 no longer supported C++98 no longer supported
------------------------- =========================
With libtorrent 1.2, C++98 is no longer supported, you need a compiler capable With libtorrent 1.2, C++98 is no longer supported, you need a compiler capable
of at least C++11 to build libtorrent. of at least C++11 to build libtorrent.
@ -21,7 +21,7 @@ of at least C++11 to build libtorrent.
This also means libtorrent types now support move. This also means libtorrent types now support move.
forward declaring libtorrent types deprecated forward declaring libtorrent types deprecated
--------------------------------------------- =============================================
Clients are discouraged from forward declaring types from libtorrent. Clients are discouraged from forward declaring types from libtorrent.
Instead, include the <libtorrent/fwd.hpp> header. Instead, include the <libtorrent/fwd.hpp> header.
@ -33,7 +33,7 @@ In the future, ``libtorrent`` will be the alias and ``lt`` the namespace name.
With no forward declarations inside libtorrent's namespace though, there should not be any reason for clients to re-open the namespace. With no forward declarations inside libtorrent's namespace though, there should not be any reason for clients to re-open the namespace.
resume data handling resume data handling
-------------------- ====================
To significantly simplify handling of resume data, the previous way of handling it is deprecated. To significantly simplify handling of resume data, the previous way of handling it is deprecated.
resume data is no longer passed in as a flat buffer in the add_torrent_params. resume data is no longer passed in as a flat buffer in the add_torrent_params.
@ -51,13 +51,13 @@ The old API is still supported as long as libtorrent is built with deprecated fu
It will be performing slightly better without deprecated functions present. It will be performing slightly better without deprecated functions present.
announce entry multi-home support announce entry multi-home support
--------------------------------- =================================
The announce_entry type now captures status on individual endpoints, as opposed to treating every tracker behind the same name as a single tracker. The announce_entry type now captures status on individual endpoints, as opposed to treating every tracker behind the same name as a single tracker.
This means some properties has moved into the ``announce_endpoint`` structure, and an announce entry has 0 or more endpoints. This means some properties has moved into the ``announce_endpoint`` structure, and an announce entry has 0 or more endpoints.
alerts no longer cloneable alerts no longer cloneable
-------------------------- ==========================
As part of the transition to a more efficient handling of alerts, 1.1 allocated them in a contiguous, heterogeneous, vector. As part of the transition to a more efficient handling of alerts, 1.1 allocated them in a contiguous, heterogeneous, vector.
This means they are no longer heap allocated nor held by a smart pointer. This means they are no longer heap allocated nor held by a smart pointer.
@ -65,14 +65,14 @@ The ``clone()`` member on alerts was deprecated in 1.1 and removed in 1.2.
To pass alerts across threads, instead pull out the relevant information from the alerts and pass that across. To pass alerts across threads, instead pull out the relevant information from the alerts and pass that across.
boost replaced by std boost replaced by std
--------------------- =====================
``boost::shared_ptr`` has been replaced by ``std::shared_ptr`` in the libtorrent API. ``boost::shared_ptr`` has been replaced by ``std::shared_ptr`` in the libtorrent API.
The same goes for ``<cstdint>`` types, instead of ``boost::int64_t``, libtorrent now uses ``std::int64_t``. The same goes for ``<cstdint>`` types, instead of ``boost::int64_t``, libtorrent now uses ``std::int64_t``.
Instead of ``boost::array``, ``std::array`` is used, and ``boost::function`` has been replaced by ``std::fuction``. Instead of ``boost::array``, ``std::array`` is used, and ``boost::function`` has been replaced by ``std::fuction``.
strong typedefs strong typedefs
--------------- ===============
In order to strengthen type-safety, libtorrent now uses special types to represent certain indexes and ID types. In order to strengthen type-safety, libtorrent now uses special types to represent certain indexes and ID types.
Any integer referring to a piece index, now has the type ``piece_index_t``, and indices to files in a torrent, use ``file_index_t``. Any integer referring to a piece index, now has the type ``piece_index_t``, and indices to files in a torrent, use ``file_index_t``.
@ -81,7 +81,7 @@ Similarly, time points and duration now use ``time_point`` and ``duration`` from
The specific types have typedefs at ``lt::time_point`` and ``lt::duration``, and the clock used by libtorrent is ``lt::clock_type``.` The specific types have typedefs at ``lt::time_point`` and ``lt::duration``, and the clock used by libtorrent is ``lt::clock_type``.`
strongly typed flags strongly typed flags
-------------------- ====================
Enum flags have been replaced by strongly typed flags. Enum flags have been replaced by strongly typed flags.
This means their implicit conversion to and from ``int`` is deprecated. This means their implicit conversion to and from ``int`` is deprecated.
@ -100,14 +100,14 @@ Insted say::
(Also note that in this specific example, the flags moved out of the ``add_torrent_params`` structure, but this is unrelated to them also having stronger types). (Also note that in this specific example, the flags moved out of the ``add_torrent_params`` structure, but this is unrelated to them also having stronger types).
span<> and string_view span<> and string_view
---------------------- ======================
The interface has adopted ``string_view`` (from boost for now) and ``span<>`` (custom implementation for now). The interface has adopted ``string_view`` (from boost for now) and ``span<>`` (custom implementation for now).
This means some function calls that previously took ``char const*`` or ``std::string`` may now take an ``lt::string_view``. This means some function calls that previously took ``char const*`` or ``std::string`` may now take an ``lt::string_view``.
Similarly, functions that previously would take a pointer and length pair will now take a ``span<>``. Similarly, functions that previously would take a pointer and length pair will now take a ``span<>``.
periphery utility functions no longer exported periphery utility functions no longer exported
---------------------------------------------- ==============================================
Historically, libtorrent has exported functions not essential to its core bittorrent functionality. Historically, libtorrent has exported functions not essential to its core bittorrent functionality.
Such as filesystem functions like ``directory``, ``file`` classes and ``remove``, ``create_directory`` functions. Such as filesystem functions like ``directory``, ``file`` classes and ``remove``, ``create_directory`` functions.
@ -117,14 +117,14 @@ Time functions like ``time_now``. These functions are no longer available to cli
Instead, it is recommended to use boost.filesystem or the experimental filesystem TS. Instead, it is recommended to use boost.filesystem or the experimental filesystem TS.
plugins plugins
------- =======
libtorrent session plugins no longer have all callbacks called unconditionally. libtorrent session plugins no longer have all callbacks called unconditionally.
The callback has to register which callbacks it's interested in receiving by returning a bitmask from ``std::uint32_t implemented_features()``. The callback has to register which callbacks it's interested in receiving by returning a bitmask from ``std::uint32_t implemented_features()``.
The return value is documented in the plugin class. The return value is documented in the plugin class.
RSS functions removed RSS functions removed
--------------------- =====================
The deprecated RSS functions have been removed from the library interface. The deprecated RSS functions have been removed from the library interface.