Skip to content

Releases: arvidn/libtorrent

libtorrent-1.2.3

19 Dec 17:01
Compare
Choose a tag to compare

1.2.3 release

  • fix erroneous event=completed tracker announce when checking files
  • promote errors in parsing listen_interfaces to post listen_failed_alert
  • fix bug in protocol encryption/obfuscation
  • fix buffer overflow in SOCKS5 UDP logic
  • fix issue of rapid calls to file_priority() clobbering each other
  • clear tracker errors on success
  • optimize setting with unlimited unchoke slots
  • fixed restoring of trackers, comment, creation date and created-by in resume data
  • fix handling of torrents with too large pieces
  • fixed division by zero in anti-leech choker
  • fixed bug in torrent_info::swap

libtorrent-1.1.14

19 Dec 16:40
Compare
Choose a tag to compare

1.1.14 release

  • support building with new boost version
  • add handling on invalid piece index to torrent_handle::have_piece()
  • fix error in treatment of move_storage() flags
  • fix division by zero in anti-leech choker
  • fix chunked http header validation
  • fix use-after-free in SSL shutdown
  • fix possible leak entry when assigning from bdecode_node or lazy_entry
  • fix error handling of moving storage to a drive letter that isn't mounted
  • fix bug in python binding parsing file_priorities from add_torrent_params
  • fix target hostname in http connections using http proxy

libtorrent 1.2.2

25 Sep 21:35
Compare
Choose a tag to compare

1.2.2 release

  • fix cases where the disable_hash_checks setting was not honored
  • fix updating of is_finished torrent status, when changing piece priorities
  • fix regression in &left= reporting when adding a seeding torrent
  • fix integer overflow in http parser
  • improve sanitation of symlinks, to support more complex link targets
  • add DHT routing table affinity for BEP 42 nodes
  • add torrent_info constructor overloads to control torrent file limits
  • feature to disable DHT, PEX and LSD per torrent
  • fix issue where trackers from magnet links were not included in create_torrent()
  • make peer_info::client a byte array in python binding
  • pick contiguous pieces from peers with high download rate
  • fix error handling of moving storage to a drive letter that isn't mounted
  • fix HTTP Host header when using proxy

libtorrent 1.2.1

03 May 07:45
Compare
Choose a tag to compare

1.2.1 release

  • add dht_pkt_alert and alerts_dropped_alert to python bindings
  • fix python bindins for block_uploaded_alert
  • optimize resolving duplicate filenames in loading torrent files
  • fix python binding of dht_settings
  • tighten up various input validation checks
  • fix create_torrent python binding
  • update symlinks to conform to BEP 47
  • fix python bindings for peer_info
  • support creating symlinks, for torrents with symlinks in them
  • fix error in seed_mode flag
  • support magnet link parameters with number siffixes
  • consistently use "lt" namespace in examples and documentation
  • fix Mingw build to use native cryptoAPI
  • uPnP/NAT-PMP errors no longer set the client's advertised listen port to zero

libtorrent-1.1.13

27 Apr 16:02
Compare
Choose a tag to compare
  • fix sock_type_t python binding
  • tighten up various input validation checks
  • replace use of boost-endian with boost-predef

libtorrent-1.2.0

12 Jan 15:56
Compare
Choose a tag to compare

1.2 is a major upgrade from the 1.1.x series. It is not ABI compatible with 1.1.x.

Most prominent changes are:

  • requires boost >= 1.58 to build
  • require C++11 to build
  • improved support for listening on multiple sockets and interfaces
  • announce_entry no longer represents a single tracker IP, but has a list of endpoints announced to. This is to support multi-homed clients.
  • introduce introduce distinct types for peer_class_t, piece_index_t and file_index_t. They implicitly convert to raw integers, but the conversion is deprecated.
  • alert types are no longer copyable and ownership is never transferred to clients
  • deprecated alert::progress_notification alert category, split into finer grained categories
  • deprecate identify_client() and fingerprint type
  • deprecated public to_hex() and from_hex() functions
  • remove deprecate session_settings API (use settings_pack instead)
  • transitioned exception types to system_error
  • move files one-by-one when moving storage for a torrent
  • removed RSS support
  • removed feature to resolve country for peers

More on changes to API that are not backwards compatible can be found here.

Rest of the changelog:

  • tweak heuristic of how to interpret url seeds in multi-file torrents
  • support &ipv4= tracker argument for private torrents
  • renamed debug_notification to connect_notification
  • when updating listen sockets, only post alerts for new ones
  • deprecate anonymous_mode_alert
  • deprecated force_proxy setting (when set, the proxy is always used)
  • add support for Port Control Protocol (PCP)
  • deliver notification of alerts being dropped via alerts_dropped_alert
  • update plugin interface functions for improved type-safety
  • implemented support magnet URI extension, select specific file indices for download, BEP53
  • make tracker keys multi-homed. remove set_key() function on session.
  • add flags()/set_flags()/unset_flags() to torrent_handle, deprecate individual functions
  • added alert for block being sent to the send buffer
  • drop support for windows compilers without std::wstring
  • implemented support for DHT infohash indexing, BEP51
  • removed deprecated support for file_base in file_storage
  • added support for running separate DHT nodes on each network interface
  • added support for establishing UTP connections on any network interface
  • added support for sending tracker announces on every network interface
  • introduce "lt" namespace alias
  • need_save_resume_data() will no longer return true every 15 minutes
  • make the file_status interface explicitly public types
  • added resolver_cache_timeout setting for internal host name resolver
  • make parse_magnet_uri take a string_view instead of std::string
  • deprecate add_torrent_params::url field. use parse_magnet_uri instead
  • optimize download queue management
  • deprecated (undocumented) file:// urls
  • add limit for number of web seed connections
  • added support for retrieval of DHT live nodes
  • complete UNC path support
  • add packets pool allocator
  • remove disk buffer pool allocator
  • fix last_upload and last_download overflow after 9 hours in past
  • python binding add more add_torrent_params fields and an invalid key check
  • fix crash caused by empty bitfield
  • removed disk-access-log build configuration
  • removed mmap_cache feature
  • strengthened type safety in handling of piece and file indices
  • make sequence number for mutable DHT items backed by std::int64_t
  • tweaked storage_interface to have stronger type safety
  • deprecate relative times in torrent_status, replaced by std::chrono::time_point
  • refactor in alert types to use more const fields and more clear API
  • changed session_stats_alert counters type to signed (std::int64_t)
  • remove torrent eviction/ghost torrent feature
  • include target in DHT lookups, when queried from the session
  • improve support for HTTP redirects for web seeds
  • use string_view in entry interface
  • deprecate "send_stats" property on trackers (since lt_tracker extension has been removed)
  • improve file layout optimization when creating torrents with padfiles
  • remove remote_dl_rate feature
  • source code migration from boost::shared_ptr to std::shared_ptr
  • storage_interface API changed to use span and references
  • changes in public API to work with std::shared_ptr<torrent_info>
  • extensions API changed to use span and std::shared_ptr
  • plugin API changed to handle DHT requests using string_view
  • removed support for lt_trackers and metadata_transfer extensions (pre-dating ut_metadata)
  • support windows' CryptoAPI for SHA-1
  • separated ssl and crypto options in build
  • remove lazy-bitfield feature
  • simplified suggest-read-cache feature to not depend on disk threads
  • removed option to disable contiguous receive buffers
  • separated address and port fields in listen alerts
  • added support for parsing new x.pe parameter from BEP 9
  • peer_blocked_alert now derives from peer_alert
  • made alerts move-only
  • added support for BEP 32, "IPv6 extension for DHT"
  • overhauled listen socket and UDP socket handling, improving multi-home support and bind-to-device
  • resume data is now communicated via add_torrent_params objects
  • added new read_resume_data()/write_resume_data functions to write bencoded, backwards compatible resume files
  • removed deprecated fields from add_torrent_params
  • deprecate "resume_data" field in add_torrent_params
  • improved support for bind-to-device
  • deprecated ssl_listen, SSL sockets are specified in listen_interfaces now
  • resume data no longer has timestamps of files

libtorrent-1.1.12

11 Jan 23:40
Compare
Choose a tag to compare

1.1.12 release

  • uTP performance fixes

libtorrent-1.2-RC2

19 Nov 13:10
Compare
Choose a tag to compare
libtorrent-1.2-RC2 Pre-release
Pre-release

This is a release candidate of libtorrent 1.2.0, not a final release.
This version is ABI incompatible with the 1.1.x releases.
With libtorrent 1.2.0, C++11 is required to build and in some cases the API has been altered as well. Mostly to use standard C++ types instead of boost types, but also to use more modern vocabulary types like string_view and span.

The main changes affecting the API are documented here.

The main differences since RC1 are:

  • span type now use std::ptrdiff_t for size and indices, aligned with gsl::span
  • the old (slow) bdecode() function has been deprecated

The updates since the latest stable release are:

  • support &ipv4= tracker argument for private torrents
  • renamed debug_notification to connect_notification
  • when updating listen sockets, only post alerts for new ones
  • deprecate anonymous_mode_alert
  • deprecated force_proxy setting (when set, the proxy is always used)
  • add support for Port Control Protocol (PCP)
  • deliver notification of alerts being dropped via alerts_dropped_alert
  • deprecated alert::progress_notification alert category, split into
    finer grained categories
  • update plugin interface functions for improved type-safety
  • implemented support magnet URI extension, select specific file indices
    for download, BEP53
  • make tracker keys multi-homed. remove set_key() function on session.
  • add flags()/set_flags()/unset_flags() to torrent_handle, deprecate individual functions
  • added alert for block being sent to the send buffer
  • drop support for windows compilers without std::wstring
  • implemented support for DHT infohash indexing, BEP51
  • removed deprecated support for file_base in file_storage
  • added support for running separate DHT nodes on each network interface
  • added support for establishing UTP connections on any network interface
  • added support for sending tracker announces on every network interface
  • introduce "lt" namespace alias
  • need_save_resume_data() will no longer return true every 15 minutes
  • make the file_status interface explicitly public types
  • added resolver_cache_timeout setting for internal host name resolver
  • make parse_magnet_uri take a string_view instead of std::string
  • deprecate add_torrent_params::url field. use parse_magnet_uri instead
  • optimize download queue management
  • deprecated (undocumented) file:// urls
  • add limit for number of web seed connections
  • added support for retrieval of DHT live nodes
  • complete UNC path support
  • add packets pool allocator
  • remove disk buffer pool allocator
  • fix last_upload and last_download overflow after 9 hours in past
  • python binding add more add_torrent_params fields and an invalid key check
  • introduce introduce distinct types for peer_class_t, piece_index_t and
    file_index_t.
  • fix crash caused by empty bitfield
  • removed disk-access-log build configuration
  • removed mmap_cache feature
  • strengthened type safety in handling of piece and file indices
  • deprecate identify_client() and fingerprint type
  • make sequence number for mutable DHT items backed by std::int64_t
  • tweaked storage_interface to have stronger type safety
  • deprecate relative times in torrent_status, replaced by std::chrono::time_point
  • refactor in alert types to use more const fields and more clear API
  • changed session_stats_alert counters type to signed (std::int64_t)
  • remove torrent eviction/ghost torrent feature
  • include target in DHT lookups, when queried from the session
  • improve support for HTTP redirects for web seeds
  • use string_view in entry interface
  • deprecate "send_stats" property on trackers (since lt_tracker extension has
    been removed)
  • remove deprecate session_settings API (use settings_pack instead)
  • improve file layout optimization when creating torrents with padfiles
  • remove remote_dl_rate feature
  • source code migration from boost::shared_ptr to std::shared_ptr
  • storage_interface API changed to use span and references
  • changes in public API to work with std::shared_ptr<torrent_info>
  • extensions API changed to use span and std::shared_ptr
  • plugin API changed to handle DHT requests using string_view
  • removed support for lt_trackers and metadata_transfer extensions
    (pre-dating ut_metadata)
  • support windows' CryptoAPI for SHA-1
  • separated ssl and crypto options in build
  • remove lazy-bitfield feature
  • simplified suggest-read-cache feature to not depend on disk threads
  • removed option to disable contiguous receive buffers
  • deprecated public to_hex() and from_hex() functions
  • separated address and port fields in listen alerts
  • added support for parsing new x.pe parameter from BEP 9
  • peer_blocked_alert now derives from peer_alert
  • transitioned exception types to system_error
  • made alerts move-only
  • move files one-by-one when moving storage for a torrent
  • removed RSS support
  • removed feature to resolve country for peers
  • added support for BEP 32, "IPv6 extension for DHT"
  • overhauled listen socket and UDP socket handling, improving multi-home
    support and bind-to-device
  • resume data is now communicated via add_torrent_params objects
  • added new read_resume_data()/write_resume_data functions to write bencoded,
    backwards compatible resume files
  • removed deprecated fields from add_torrent_params
  • deprecate "resume_data" field in add_torrent_params
  • improved support for bind-to-device
  • deprecated ssl_listen, SSL sockets are specified in listen_interfaces now
  • improved support for listening on multiple sockets and interfaces
  • resume data no longer has timestamps of files
  • require C++11 to build libtorrent

libtorrent-1.1.11

18 Nov 16:10
Compare
Choose a tag to compare
  • fix move_storage with save_path with a trailing slash
  • fix tracker announce issue, advertising port 0 in secondary IPv6 announce
  • fix missing boost/noncopyable.hpp includes
  • fix python binding for torrent_info::creation_date()

libtorrent-1.2.0-RC

13 Oct 10:50
Compare
Choose a tag to compare
libtorrent-1.2.0-RC Pre-release
Pre-release

This is a release candidate of libtorrent 1.2.0, not a final release.
This version is ABI incompatible with the 1.1.x releases.
With libtorrent 1.2.0, C++11 is required to build and in some cases the API has been altered as well. Mostly to use standard C++ types instead of boost types, but also to use more modern vocabulary types like string_view and span.

The main changes affecting the API are documented here.

The major highlights in this update are:

  • improved support for multi-homed systems. It is now possible to specify multiple listen interfaces. The DHT also supports multiple instances, one per interface.
  • cleanup of anonymous-mode and force proxy interactions. proxy settings are now always honoured, whether they work or not.
  • resume data has been simplified by separating serializing/deserializing from adding torrents (read_resume_data()/write_resume_data()). This gives clients more control over exactly what resume data and stats gets saved and restored.
  • cleaned up API by removing internal functions from public API.
  • introduced strong types in public API, for referring to piece indices, file indices as well as flag types. These will still implicitly convert to and from naked integrals as long as deprecated functions are enabled (to ease transition).
  • The groundwork has been laid to improve link safety by introducing inline namespaces, indicating the ABI version of the library. libtorrent types can no longer be declared in client translation units, instead include <libtorrent/fwd.hpp>
  • in libtorrent 1.1.x the performance of alerts were significantly boosted by allocating them in a contiguous buffer. libtorrent 1.2 takes the next step and removes the ability to clone alert objects (which was deprecated in 1.1)
  • many functions that previously took std::string objects, now take lt::string_view (which is meant to be similar to std::string_view).
  • plugin extensions at the session level now has to subscribe to have hooks called on it. This is a measure to improve scalability of extensions.

Full changelog since the 1.1.10 stable release

* renamed debug_notification to connect_notification
* when updating listen sockets, only post alerts for new ones
* deprecate anonymous_mode_alert
* deprecated force_proxy setting (when set, the proxy is always used)
* add support for Port Control Protocol (PCP)
* deliver notification of alerts being dropped via alerts_dropped_alert
* deprecated alert::progress_notification alert category, split into
  finer grained categories
* update plugin interface functions for improved type-safety
* implemented support magnet URI extension, select specific file indices
  for download, BEP53
* make tracker keys multi-homed. remove set_key() function on session.
* add flags()/set_flags()/unset_flags() to torrent_handle, deprecate individual functions
* added alert for block being sent to the send buffer
* drop support for windows compilers without std::wstring
* implemented support for DHT infohash indexing, BEP51
* removed deprecated support for file_base in file_storage
* added support for running separate DHT nodes on each network interface
* added support for establishing UTP connections on any network interface
* added support for sending tracker announces on every network interface
* introduce "lt" namespace alias
* need_save_resume_data() will no longer return true every 15 minutes
* make the file_status interface explicitly public types
* added resolver_cache_timeout setting for internal host name resolver
* make parse_magnet_uri take a string_view instead of std::string
* deprecate add_torrent_params::url field. use parse_magnet_uri instead
* optimize download queue management
* deprecated (undocumented) file:// urls
* add limit for number of web seed connections
* added support for retrieval of DHT live nodes
* complete UNC path support
* add packets pool allocator
* remove disk buffer pool allocator
* fix last_upload and last_download overflow after 9 hours in past
* python binding add more add_torrent_params fields and an invalid key check
* introduce introduce distinct types for peer_class_t, piece_index_t and
  file_index_t.
* fix crash caused by empty bitfield
* removed disk-access-log build configuration
* removed mmap_cache feature
* strengthened type safety in handling of piece and file indices
* deprecate identify_client() and fingerprint type
* make sequence number for mutable DHT items backed by std::int64_t
* tweaked storage_interface to have stronger type safety
* deprecate relative times in torrent_status, replaced by std::chrono::time_point
* refactor in alert types to use more const fields and more clear API
* changed session_stats_alert counters type to signed (std::int64_t)
* remove torrent eviction/ghost torrent feature
* include target in DHT lookups, when queried from the session
* improve support for HTTP redirects for web seeds
* use string_view in entry interface
* deprecate "send_stats" property on trackers (since lt_tracker extension has
  been removed)
* remove deprecate session_settings API (use settings_pack instead)
* improve file layout optimization when creating torrents with padfiles
* remove remote_dl_rate feature
* source code migration from boost::shared_ptr to std::shared_ptr
* storage_interface API changed to use span and references
* changes in public API to work with std::shared_ptr<torrent_info>
* extensions API changed to use span and std::shared_ptr
* plugin API changed to handle DHT requests using string_view
* removed support for lt_trackers and metadata_transfer extensions
  (pre-dating ut_metadata)
* support windows' CryptoAPI for SHA-1
* separated ssl and crypto options in build
* remove lazy-bitfield feature
* simplified suggest-read-cache feature to not depend on disk threads
* removed option to disable contiguous receive buffers
* deprecated public to_hex() and from_hex() functions
* separated address and port fields in listen alerts
* added support for parsing new x.pe parameter from BEP 9
* peer_blocked_alert now derives from peer_alert
* transitioned exception types to system_error
* made alerts move-only
* move files one-by-one when moving storage for a torrent
* removed RSS support
* removed feature to resolve country for peers
* added support for BEP 32, "IPv6 extension for DHT"
* overhauled listen socket and UDP socket handling, improving multi-home
  support and bind-to-device
* resume data is now communicated via add_torrent_params objects
* added new read_resume_data()/write_resume_data functions to write bencoded,
  backwards compatible resume files
* removed deprecated fields from add_torrent_params
* deprecate "resume_data" field in add_torrent_params
* improved support for bind-to-device
* deprecated ssl_listen, SSL sockets are specified in listen_interfaces now
* improved support for listening on multiple sockets and interfaces
* resume data no longer has timestamps of files
* require C++11 to build libtorrent