What's new in libtorrent 2.0.10
Feb 19, 2024
- Don't run win32 tests when building python wheel by @arvidn in #7437
- Fix missing python converter for dht::announce_flags_t by @arvidn in #7443
- Bump boost version to enable Python 3.11 package builds by @cas-- in #7445
- Cmake: don't define _FILE_OFFSET_BITS on Windows by @lazka in #7449
- Update SSL certificates for tests by @arvidn in #7466
- Updated numerous repo addresses & revs of pre-commit-hooks by @arvidn in #7468
- Fixes various typos by @luzpaz in #7482
- Fix dht_announce_interval not being followed accurately in some cases by @thrnz in #7476
- suppress new GCC warning from 3rd party code (openssl) by @arvidn in #7494
- update FreeBSD dependency on boost_build to boost-build by @arvidn in #7495
- README: Remove LGTM badges by @luzpaz in #7500
- Forward port candidate cache by @arvidn in #7496
- hidden dllexport by @arvidn in #7497
- reset_save_path by @arvidn in #7498
- fix unnecessary capture of this in lambda expressions by @arvidn in #7503
- run thread-sanitizer on Ubuntu-22.04 on CI by @arvidn in #7499
- make sure the library builds with C++17 and C++20, in addition to C++14 by @arvidn in #7501
- improve TORRENT_RVO feature detection by @arvidn in #7506
- add python bindings by @rcarpa in #7509
- fix use of python ssl module by @arvidn in #7547
- address issue in boost.asio building on iOS by @arvidn in #7546
- improve checking and testing of max piece size by @arvidn in #7514
- fix MingW64 CI build by @arvidn in #7549
- fix assert in uTP resend_packet() by @arvidn in #7574
- bump python version on github actions to 3.12 by @arvidn in #7579
- Color theme revamp by @sledgehammer999 in #7561
- allow execution of on_unknown_torrent method in the absence of active torrents by @joriscarrier in #7537
- migrate awy from aligned_storage by @arvidn in #7584
- minor fixes by @arvidn in #7581
- allow I2P leaseset encryption type 4 by @Vort in #7585
- Fix the wrong port is being announced to tracker by @glassez in #7596
- Remove obsolete LGTM config file by @xavier2k6 in #7591
- Update Cirrus CI config by @xavier2k6 in #7589
- Restore file priorities in POSIX storage by @HanabishiRecca in #7594
- fix and suppress some new clang warnings util addressed (in master) by @arvidn in #7609
- Reject resume data if it contains mismatching info hashes by @glassez in #7597
- add test coverage for read_resume_data() by @arvidn in #7610
- fix test_copy_file for tmpfs by @arvidn in #7611
- add missing test file to tarball by @arvidn in #7612
- Updated numerous pre-commit hook revs. by @xavier2k6 in #7605
- forward-port of #7615 by @arvidn in #7616
- recreate the SSL test certificates with long expiration time by @arvidn in #7618
- bump version to 2.0.10 by @arvidn in #7619
New in libtorrent 2.0.9 (May 22, 2023)
- Fix issue with web seed connections when they close and re-open
- Fallocate() not supported is not a fatal error
- Fix proxying of IPv6 connections via IPv4 proxy
- Treat CGNAT address range as local IPs
- Add stricter checking of piece layers when loading torrents
- Add stricter checking of v1 and v2 hashes being consistent
- Cache failed DNS lookups as well as successful ones
- Add an i2p torrent state to control interactions with clear swarms
- Fix i2p SAM protocol parsing of quoted messages
- Expose i2p peer destination in peer_info
- Fix i2p tracker announces
- Fix issue with read_piece() stopping torrent on pieces not yet downloaded
- Improve handling of allow_i2p_mixed setting to work for magnet links
- Fix web seed request for renamed single-file torrents
- Fix issue where web seeds could disappear from resume data
- Extend save_resume with additional conditional flags
- Fix issue with retrying trackers in tiers > 0
- Fix last_upload and last_download resume data fields to use posix time
- Improve error messages for no_connect_privileged_ports, by untangle it from the port filter
- Fix I2P issue introduced in 2.0.0
- Add async tracker status query, post_trackers()
- Add async torrent status query, post_status()
- Support loading version 2 of resume data format
- Fix issue with odd piece sizes
- Add async piece availability query, post_piece_availability()
- Add async download queue query, post_download_queue()
- Add async file_progress query, post_file_progress()
- Add async peer_info query, post_peer_info()
New in libtorrent 2.0.8 (Oct 23, 2022)
- Fix uTP streams timing out instead of closing cleanly
- Add write_torrent_file_buf() overload for generating .torrent files
- Add create_torrent::generate_buf() function to generate into a buffer
- Fix copy_file when the file ends with a sparse region
- UTP performance, fix packet loss when sending is stalled
- Fix trackers being stuck after session pause/resume
- Fix bug in hash_picker with empty files
- UTP performance, prevent premature timeouts/resends
- Add option to not memory map files below a certain size
- Settings_pack now returns default values when queried for missing settings
- Fix copy_file fall-back when SEEK_HOL/SEEK_DATA is not supported
- Improve error reporting from file copy and move
- Tweak pad file placement to match reference implementation (tail-padding)
- UTP performance, more lenient nagle's algorithm to always allow one outstanding undersized packet
- UTP performance, piggy-back held back undersized packet with ACKs
- UTP performance, don't send redundant deferred ACKs
- Support incoming SOCKS5 packets with hostnames as source address, for UDP trackers
- Ignore duplicate network interface change notifications on linux
- Fix total_want/want accounting when forcing a recheck
- Fix merging metadata with magnet links added on top of existing torrents
- Add torrent_flag to default all file priorities to dont_download
- Fix &so= feature in magnet links
- Improve compatibility of SOCKS5 UDP ASSOCIATE
- Fix madvise range for flushing cache in mmap_storage
- Open files with no_cache set in O_SYNC mode
New in libtorrent 2.0.7 (Jul 18, 2022)
- Fix issue in use of copy_file_range() on linux
- Avoid open-file race in the file_view_pool
- FIx issue where stop-when-ready would not close files
- Fix issue with duplicate hybrid torrent via separate v1 and v2 magnet links
- Added new function to load torrent files, load_torrent_*()
- Support sync_file_range() on linux
- Fix issue in write_torrent_file() when file size is exactly piece size
- Fix file_num_blocks() and file_num_pieces() for empty files
- Add new overload to make_magnet_uri()
- Add missing protocol version to tracker_reply_alert and tracker_error_alert
- Fix privilege issue with SetFileValidData()
- Add asynchronous overload of torrent_handle::add_piece()
- Default to a single hashing thread, for full checks
- Fix bug when checking files and the first piece is invalid
- As well as changes merged in from the 1.2.x branch:
- Fixed tracker connections spinning when hostname lookups stall
- Fixed error in pkg-config file generation in Jamfile
- Improve backwards compatibility with loading magnet link resume files
- Fix bind-to-device for tracker announces and UPnP
- Rename peer_tos setting to peer_dscp
- Fix bdecode support for large strings (>= 100 MB)
New in libtorrent 2.0.5 (Dec 5, 2021)
- On windows, explicitly flush memory mapped files periodically
- Fix build with WolfSSL
- Fix issue where incoming uTP connections were not accepted over SOCKS5
- Fix several issues in handling of checking files of v2 torrents, esp. from magnet links
- Make the token limit when parsing metadata from magnet files configurable
- Fix issue with stalled pieces on disk full errors
- Fix missing python binding for file_progress_flags
- Fix torrent_file_with_hashes() to fail when we don't have the piece layers
- Restore path character encoding conversion for non UTF-8 locales on linux
- Fix use-after-free bug in make_magnet_uri
- Add write_torrent_file() to produce a .torrent file from add_torrent_params
- Allow loading v2 .torrent files without piece layer
- Fix issue with adding v2 torrents with invalid file root hash
New in libtorrent 2.0.4 (Jun 7, 2021)
- fix piece picker bug causing double-picks with prefer-contiguous enabled
- expose session_params in python bindings
- fix (deprecated) use of add_torrent_params::info_hash
- fix issue creating and loading v2 torrents with empty files. Improves
- conformance to BEP52 reference implementation
- fixes merged in from the 1.2.x branch:
- improve handling of seed flag in PEX messages
- fix issue of accruing unlimited DHT node candidates when DHT is disabled
- fix bug in parsing chunked encoding
- fix incorrect reporting of active_duration when entering graceful-pause
- fix python binding for functions taking string_view
- fix python binding for torrent_info constructor overloads
- issue python deprecation warnings for some deprecated functions in the python bindings
- fix python binding for torrent_info::add_url_seed, add_tracker and add_http_seed
New in libtorrent 2.0.3 (Mar 29, 2021)
- Add new torrent_file_with_hashes() which includes piece layers for
- Creating .torrent files
- Add file_prio_alert, posted when file priorities are updated
- Fix issue where set_piece_hashes() would not propagate file errors
- Add missing python binding for event_t
- Add work-around for systems without fseeko() (such as Android)
- Add convenience header libtorrent/libtorrent.hpp
- Increase default max_allowed_in_request_queue
- Fix loading non-ascii filenames on windows with torrent_info constructor (2.0 regression)
- Add std::hash<> specialization for info_hash_t
- Fix integer overflow in hash_picker and properly restrict max file sizes in torrents
- Strengthen SSRF mitigation for web seeds
New in libtorrent 2.0.2 (Jan 8, 2021)
- add v1() and v2() functions to torrent_info
- fix piece_layers() to work for single-piece files
- fix python binding regression in session constructor flags
- fix unaligned piece requests in mmap_storage
- improve client_data_t ergonomics
- fix issue with concurrent access to part files
New in libtorrent 2.0.1 (Nov 15, 2020)
- Fix attribute in single-file v2 torrent creation
- Fix padding for empty files in v2 torrent creation
- Add function to ask a file_storage whether it's v2 or not
- Fix mtime field when creating single-file v2 torrents
- Fix performance regression in checking files
- Disable use of SetFileValidData() by default (windows). A new setting
- Allows enabling it
New in libtorrent 2.0.0 (Oct 26, 2020)
- dropped depenency on iconv
- deprecate set_file_hash() in torrent creator, as it's superceded by v2 torrents
- deprecate mutable access to info_section in torrent_info
- removed deprecated lazy_entry/lazy_bdecode
- stats_alert deprecated
- remove bittyrant choking algorithm
- update userdata in add_torrent_params to be type-safe and add to torrent_handle
- add ip_filter to session_params
- added support for wolfSSL for SHA-1 hash and HTTPS (no Torrents over SSL)
- requires OpenSSL minimum version 1.0.0 with SNI support
- deprecated save_state() and load_state() on session in favour of new
- write_session_params() and read_session_params()
- added support for BitTorrent v2 (see docs/upgrade_to_2.0.html)
- create_torrent() pad_file_limit parameter removed
- create_torrent() merkle- and optimize-alignment flags removed
- merkle_tree removed from add_torrent_params
- announce_entry expose information per v1 and v2 info-hash announces
- deprecated sha1_hash info_hash members on torrent_removed_alert,
- torrent_deleted_alert, torrent_delete_failed_alert and add_torrent_params
- undeprecate error_file_metadata for torrent errors related to its metadata
- remove support for adding a torrent under a UUID (used for previous RSS support)
- remove deprecated feature to add torrents by file:// URL
- remove deprecated feature to download .torrent file from URL
- requires boost >= 1.66 to build
- update networking API to networking TS compatible boost.asio
- overhauled disk I/O subsystem to use memory mapped files (where available)
- libtorrent now requires C++14 to build
- added support for GnuTLS for HTTPS and torrents over SSL
New in libtorrent 0.16.16 (May 13, 2014)
- add missing add_files overload to the python bindings
- improve error handling in http gunzip
- fix debug logging for banning web seeds
- improve support for de-selected files in full allocation mode
- fix dht_bootstrap_alert being posted
- SetFileValidData fix on windows (prevents zero-fill)
- fix minor lock_files issue on unix
New in libtorrent 0.16.15 (May 13, 2014)
- fix mingw time_t 64 bit issue
- fix use of SetFileValidData on windows
- fix crash when using full allocation storage mode
- improve error_code and error_category support in python bindings
- fix python binding for external_ip_alert
New in libtorrent 0.16.14 (May 13, 2014)
- make lt_tex more robust against bugs and malicious behavior
- HTTP chunked encoding fix
- expose file_granularity flag to python bindings
- fix DHT memory error
- change semantics of storage allocation to allocate on first write rather than on startup (behaves better with changing file priorities)
- fix resend logic in response to uTP SACK messages
- only act on uTP RST packets with correct ack_nr
- make uTP errors log in normal log mode (not require verbose)
- deduplicate web seed entries from torrent files
- improve error reporting from lazy_decode()