libtorrent

an efficient feature complete C++ bittorrent implementation

OTHER License

Stars
5.2K

Bot releases are visible (Hide)

libtorrent - libtorrent-2.0.10 Latest Release

Published by arvidn 8 months ago

What's Changed

New Contributors

Full Changelog: https://github.com/arvidn/libtorrent/compare/v2.0.9...v2.0.10

libtorrent - libtorrent-2.0.9

Published by arvidn over 1 year ago

Changes since previous release:

  • 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()
libtorrent - libtorrent-1.2.19

Published by arvidn over 1 year ago

Changes since previous version:

  • back-port load_torrent_*() functions
  • fix issue with odd piece sizes
libtorrent - libtorrent-2.0.8

Published by arvidn almost 2 years ago

changes since previous 2.0.x release:

  • 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
libtorrent - libtorrent-1.2.18

Published by arvidn almost 2 years ago

Changes since previous 1.2.x release.

  • fix issue where stop-when-ready would not close files
  • uTP performance, fix packet loss when sending is stalled
  • uTP performance, prevent premature timeouts/resends
  • 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
  • fix wanted_done/done accounting when force-rechecking
  • expose userdata via torrent_handle (back-port from 2.0)
  • fix renaming of filenames that are too long for the filesystem
  • made UPnP and LSD code avoid using select_reactor (to work around an issue on windows in boost.asio < 1.80)
libtorrent - libtorrent-2.0.7

Published by arvidn over 2 years ago

Changes since last release:

  • 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)
libtorrent - libtorrent-1.2.17

Published by arvidn over 2 years ago

Changes since last release:

  • 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)
libtorrent - libtorrent-2.0.6

Published by arvidn over 2 years ago

Changes since 2.0.5:

  • fix issue creating a v2 torrent from torrent_info containing an empty file
  • make recheck files also update which files use partfile
  • add write_through disk_io_write_mode, which flushes pieces to disk immediately
  • improve copy file function to preserve sparse regions (when supported)
  • add function to truncate over-sized files part of a torrent
  • fix directory creation on windows shared folders
  • add flag to make add_files() not record file attributes
  • deprecate (unused) allow_partial_disk_writes settings
  • fix disk-full error reporting in mmap_disk_io
  • fixed similar-torrents feature for v2 torrents
  • fix potential unbounded recursion in add_completed_job, in disk I/O
  • deprecated (unused) volatile_read_cache setting
  • fix part files being marked as hidden on windows
libtorrent - libtorrent-1.2.16

Published by arvidn over 2 years ago

changes since 1.2.15:

  • send User-Agent field in anonymous mode
  • fix python binding for settings_pack conversion
  • fix DHT announce timer issue
  • use DSCP_TRAFFIC_TYPE socket option on windows
  • update default ToS setting according to RFC 8622
  • keep trying to announce to trackers even when all fail
  • don't disable announcing from local endpoints because of temporary failures
  • fix issue in parsing UPnP XML response with multiple forwarding services
libtorrent - libtorrent-2.0.5

Published by arvidn almost 3 years ago

  • 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
libtorrent - libtorrent-1.2.15

Published by arvidn almost 3 years ago

1.2.15 released

  • cache DNS lookups for SOCKS5 proxy
  • fix stalled pieces on disk-full errors
  • fix build configuration issue on NetBSD, OpenBSD and DragonFly
  • make UTF-8 sanitization a bit stricter. This will re-write invalid UTF-8
    code points encoding surrogate pairs
  • fix restoring last_seen_complete from resume data
  • fix issue on MacOS where the DHT was not restarted on a network-up notification
  • make remove_torrent flags be treated as flags (instead of an enum)
libtorrent - libtorrent-2.0.4

Published by arvidn over 3 years ago

  • 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
libtorrent - libtorrent-1.2.14

Published by arvidn over 3 years ago

  • 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
libtorrent - libtorrent-2.0.3

Published by arvidn over 3 years ago

With this release there's also a security audit published, done by include security and sponsored by Mozilla. The issues raised in the report were addressed in the previous release and documented here along with the report.

Changes since the previous 2.0.x release:

  • 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
libtorrent - libtorrent-1.2.13

Published by arvidn over 3 years ago

Changes since the previous 1.2.x release:

  • Use /etc/ssl/cert.pem to validate HTTPS connections on MacOS
  • allow no-interest timeouts of peer connections before all connections slots are full
  • fix issue where a DHT message would count as an incoming connection
  • fix issue when failing to parse outgoing_interfaces setting
  • fix super-seeding issue that could cause a segfault
  • fix data race in python binding of session::get_torrent_status()
  • fix need_save_resume_data() for renaming files, share-mode, upload-mode,
    disable- pex, lsd, and dht.
  • fix incoming TCP connections when using tracker-only proxy
  • fix issue with paths starting with ./
  • fix integer overflow when setting a high DHT upload rate limit
  • improve Path MTU discovery logic in uTP
  • fix overflow issue when rlimit_nofile is set to infinity
  • fix issue in python binding interpreting int settings > INT_MAX
  • Fix cxxflags and linkflags injection via environment variables
libtorrent - libtorrent-2.0.2

Published by arvidn almost 4 years ago

Changes to the 2.0 branch:

  • 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

Changes merged from the 1.2 branch:

  • fix loading of DHT node ID from previous session on startup
  • use getrandom(), when available, and fall back to /dev/urandom
  • fix python binding for "value" in dht put alerts
  • fix bug in python binding for dht_put_mutable_item
  • fix uTP issue acking FIN packets
  • validate HTTPS certificates by default (trackers and web seeds)
  • load SSL certificates from windows system certificate store, to authenticate trackers
  • introduce mitigation for Server Side Request Forgery in tracker and web seed URLs
  • fix error handling for pool allocation failure
libtorrent - libtorrent-1.2.12

Published by arvidn almost 4 years ago

  • fix loading of DHT node ID from previous session on startup
  • use getrandom(), when available, and fall back to /dev/urandom
  • fix python binding for "value" in dht put alerts
  • fix bug in python binding for dht_put_mutable_item
  • fix uTP issue acking FIN packets
  • validate HTTPS certificates by default (trackers and web seeds)
  • load SSL certificates from windows system certificate store, to authenticate trackers
  • introduce mitigation for Server Side Request Forgery in tracker and web seed URLs
  • fix error handling for pool allocation failure
libtorrent - libtorrent-2.0.1

Published by arvidn almost 4 years ago

Fixes since libtorrent 2.0:

  • 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
libtorrent - libtorrent-1.2.11

Published by arvidn almost 4 years ago

Fixes since the 1.2.10 release:

  • fix issue with moving the session object
  • deprecate torrent_status::allocating. This state is no longer used
  • fix bug creating torrents with symbolic links
  • remove special case to save metadata in resume data unconditionally when added throught magnet link
  • fix bugs in mutable-torrent support (reusing identical files from different torrents)
  • fix incorrectly inlined move-assignment of file_storage
  • add session::paused flag, and the ability to construct a session in paused mode
  • fix session-pause causing tracker announces to fail
  • fix peer-exchange flags bug
  • allow saving resume data before metadata has been downloaded (for magnet links)
  • record blocks in the disk queue as downloaded in the resume data
  • fix bug in set_piece_deadline() when set in a zero-priority piece
  • fix issue in URL parser, causing issues with certain tracker URLs
  • use a different error code than host-unreachable, when skipping tracker announces
libtorrent - libtorrent-2.0

Published by arvidn about 4 years ago

Changes since

  • 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