libtorrent

an efficient feature complete C++ bittorrent implementation

OTHER License

Stars
5.2K

Bot releases are visible (Hide)

libtorrent - libtorrent-1.1.10

Published by arvidn about 6 years ago

  • fix issue in udp_socket with unusual socket failure
  • split progress_notification alert category into file-, piece- and block progress
  • utp close-reason fix
  • exposed default add_torrent_params flags to python bindings
  • fix redundant flushes of partfile metadata
  • add option to ignore min-interval from trackers on force-reannounce
  • raise default setting for active_limit
  • fall back to copy+remove if rename_file fails
  • improve handling of filesystems not supporting fallocate()
  • force-proxy no longer disables DHT
  • improve connect-boost feature, to make new torrents quickly connect peers
libtorrent - libtorrent-1.1.9

Published by arvidn about 6 years ago

  • save both file and piece priorities in resume file
  • added missing stats_metric python binding
  • uTP connections are no longer exempt from rate limits by default
  • fix exporting files from partfile while seeding
  • fix potential deadlock on Windows, caused by performing restricted
    tasks from within DllMain
  • fix issue when subsequent file priority updates cause torrent to stop
libtorrent - libtorrent-1.1.8

Published by arvidn over 6 years ago

  • coalesce reads and writes by default on windows
  • fixed disk I/O performance of checking hashes and creating torrents
  • fix race condition in part_file
  • fix part_file open mode compatibility test
  • fixed race condition in random number generator
  • fix race condition in stat_cache (disk storage)
  • improve error handling of failing to change file priority
    The API for custom storage implementations was altered
  • set the hidden attribute when creating the part file
  • fix tracker announces reporting more data downloaded than the size of the torrent
  • fix recent regression with force_proxy setting
libtorrent - libtorrent-1.1.7

Published by arvidn over 6 years ago

  • don't perform DNS lookups for the DHT bootstrap unless DHT is enabled
  • fix issue where setting file/piece priority would stop checking
  • expose post_dht_stats() to python binding
  • fix backwards compatibility to downloads without partfiles
  • improve part-file related error messages
  • fix reporting &redundant= in tracker announces
  • fix tie-break in duplicate peer connection disconnect logic
  • fix issue with SSL tracker connections left in CLOSE_WAIT state
  • defer truncating existing files until the first time we write to them
  • fix issue when receiving a torrent with 0-sized padfiles as magnet link
  • fix issue resuming 1.0.x downloads with a file priority 0
  • fix torrent_status::next_announce
  • fix pad-file scalability issue
  • made coalesce_reads/coalesce_writes settings take effect on linux and windows
  • use unique peer_ids per connection
  • fix iOS build on recent SDK
  • fix tracker connection bind issue for IPv6 trackers
  • fix error handling of some merkle torrents
  • fix error handling of unsupported hard-links
libtorrent - libtorrent-1.1.6

Published by arvidn almost 7 years ago

Release 1.1.6

  • deprecate save_encryption_settings (they are part of the normal settings)
  • add getters for peer_class_filter and peer_class_type_filter
  • make torrent_handler::set_priority() to use peer_classes
  • fix support for boost-1.66 (requires C++11)
  • fix i2p support
  • fix loading resume data when in seed mode
  • fix part-file creation race condition
  • fix issue with initializing settings on session construction
  • fix issue with receiving interested before metadata
  • fix IPv6 tracker announce issue
  • restore path sanitization behavior of ":"
  • fix listen socket issue when disabling "force_proxy" mode
  • fix full allocation failure on APFS
libtorrent - libtorrent-1.1.5

Published by arvidn about 7 years ago

Release 1.1.5

  • fix infinite loop when parsing certain invalid magnet links
  • fix parsing of torrents with certain invalid filenames
  • fix leak of torrent_peer objecs (entries in peer_list)
  • fix leak of peer_class objects (when setting per-torrent rate limits)
  • expose peer_class API to python binding
  • fix integer overflow in whole_pieces_threshold logic
  • fix uTP path MTU discovery issue on windows (DF bit was not set correctly)
  • fix python binding for torrent_handle, to be hashable
  • fix IPv6 tracker support by performing the second announce in more cases
  • fix utf-8 encoding check in torrent parser
  • fix infinite loop when parsing maliciously crafted torrents
  • fix invalid read in parse_int in bdecoder
  • fix issue with very long tracker- and web seed URLs
  • don't attempt to create empty files on startup, if they already exist
  • fix force-recheck issue (new files would not be picked up)
  • fix inconsistency in file_priorities and override_resume_data behavior
  • fix paused torrents not generating a state update when their ul/dl rate
    transitions to zero
libtorrent - libtorrent-1.1.4

Published by arvidn over 7 years ago

1.1.4 release

  • corrected missing const qualifiers on bdecode_node
  • fix changing queue position of paused torrents (1.1.3 regression)
  • fix re-check issue after move_storage
  • handle invalid arguments to set_piece_deadline()
  • move_storage did not work for torrents without metadata
  • improve shutdown time by only announcing to trackers whose IP we know
  • fix python3 portability issue in python binding
  • delay 5 seconds before reconnecting socks5 proxy for UDP ASSOCIATE
  • fix NAT-PMP crash when removing a mapping at the wrong time
  • improve path sanitization (filter unicode text direction characters)
  • deprecate partial_piece_info::piece_state
  • bind upnp requests to correct local address
  • save resume data when removing web seeds
  • fix proxying of https connections
  • fix race condition in disk I/O storage class
  • fix http connection timeout on multi-homed hosts
  • removed depdendency on boost::uintptr_t for better compatibility
  • fix memory leak in the disk cache
  • fix double free in disk cache
  • forward declaring libtorrent types is discouraged. a new fwd.hpp header is provided
libtorrent - libtorrent-1.1.3

Published by arvidn over 7 years ago

Changes since previous release

  • removed (broken) support for incoming connections over socks5
  • restore announce_entry's timestamp fields to posix time in python binding
  • deprecate torrent_added_alert (in favor of add_torrent_alert)
  • fix python binding for parse_magnet_uri
  • fix minor robustness issue in DHT bootstrap logic
  • fix issue where torrent_status::num_seeds could be negative
  • document deprecation of dynamic loading/unloading of torrents
  • include user-agent in tracker announces in anonymous_mode for private torrents
  • add support for IPv6 peers from udp trackers
  • correctly URL encode the IPv6 argument to trackers
  • fix default file pool size on windows
  • fix bug where settings_pack::file_pool_size setting was not being honored
  • add feature to periodically close files (to make windows clear disk cache)
  • fix bug in torrent_handle::file_status
  • fix issue with peers not updated on metadata from magnet links
libtorrent - libtorrent-1.1.2

Published by arvidn over 7 years ago

1.1.2 release

* default TOS marking to 0x20
* fix invalid access when leaving seed-mode with outstanding hash jobs
* fix ABI compatibility issue introduced with preformatted entry type
* add web_seed_name_lookup_retry to session_settings
* slightly improve proxy settings backwards compatibility
* add function to get default settings
* updating super seeding would include the torrent in state_update_alert
* fix issue where num_seeds could be greater than num_peers in torrent_status
* finished non-seed torrents can also be in super-seeding mode
* fix issue related to unloading torrents
* fixed finished-time calculation
* add missing min_memory_usage() and high_performance_seed() settings presets to python
* fix stat cache issue that sometimes would produce incorrect resume data
* storage optimization to peer classes
* fix torrent name in alerts of builds with deprecated functions
* make torrent_info::is_valid() return false if torrent failed to load
* fix per-torrent rate limits for >256 peer classes
* don't load user_agent and peer_fingerprint from session_state
* fix file rename issue with name prefix matching torrent name
* fix division by zero when setting tick_interval > 1000
* fix move_storage() to its own directory (would delete the files)
* fix socks5 support for UDP
* add setting urlseed_max_request_bytes to handle large web seed requests
* fix python build with CC/CXX environment
* add trackers from add_torrent_params/magnet links to separate tiers
* fix resumedata check issue with files with priority 0
* deprecated mmap_cache feature
* add utility function for generating peer ID fingerprint
* fix bug in last-seen-complete
* remove file size limit in torrent_info filename constructor
* fix tail-padding for last file in create_torrent
* don't send user-agent in metadata http downloads or UPnP requests when
  in anonymous mode
* fix internal resolve links lookup for mutable torrents
* hint DHT bootstrap nodes of actual bootstrap request
libtorrent - libtorrent-1.0.11

Published by arvidn over 7 years ago

Fixes since 1.0.10

* updating super seeding would include the torrent in state_update_alert
* finished non-seed torrents can also be in super-seeding mode
* make torrent_info::is_valid() return false if torrent failed to load
* fix torrent_status time_since_upload/download counters for paused torrents
* fix bug in last-seen-complete
* fix DHT announce stall when adding torrent immediately after startup
* fix bug in enumeration of network interfaces on windows
* fix padfile issue
* fix PMTUd bug
* update puff to fix gzip crash
libtorrent - libtorrent-1.0.10

Published by arvidn about 8 years ago

1.0.10 release

  • fixed inverted priority of incoming piece suggestions
  • fixed crash on invalid input in http_parser
  • added a new "preformatted" type to bencode entry variant type
  • fix division by zero in super-seeding logic
libtorrent - libtorrent-1.1.1

Published by arvidn about 8 years ago

1.1.1 release

  • update puff.c for gzip inflation
  • add dht_bootstrap_node a setting in settings_pack (and add default)
  • make pad-file and symlink support conform to BEP47
  • fix piece picker bug that could result in division by zero
  • fix value of current_tracker when all tracker failed
  • deprecate lt_trackers extension
  • remove load_asnum_db and load_country_db from python bindings
  • fix crash in session::get_ip_filter when not having set one
  • fix filename escaping when repairing torrents with broken web seeds
  • fix bug where file_completed_alert would not be posted unless file_progress
    had been queries by the client
  • move files one-by-one when moving storage for a torrent
  • fix bug in enum_net() for BSD and Mac
  • fix bug in python binding of announce_entry
  • fixed bug related to flag_merge_resume_http_seeds flag in add_torrent_params
  • fixed inverted priority of incoming piece suggestions
  • optimize allow-fast logic
  • fix issue where FAST extension messages were not used during handshake
  • fixed crash on invalid input in http_parser
  • upgraded to libtommath 1.0
  • fixed parsing of IPv6 endpoint with invalid port character separator
  • added limited support for new x.pe parameter from BEP 9
  • fixed dht stats counters that weren't being updated
  • make sure add_torrent_alert is always posted before other alerts for
    the torrent
  • fixed peer-class leak when settings per-torrent rate limits
  • added a new "preformatted" type to bencode entry variant type
  • improved Socks5 support and test coverage
  • fix set_settings in python binding
  • Added missing alert categories in python binding
  • Added dht_get_peers_reply_alert alert in python binding
  • fixed updating the node id reported to peers after changing IPs
libtorrent - libtorrent-1.1.0

Published by arvidn over 8 years ago

1.1.0 release

  • improve robustness and performance of uTP PMTU discovery
  • fix duplicate ACK issue in uTP
  • support filtering which parts of session state are loaded by load_state()
  • deprecate support for adding torrents by HTTP URL
  • allow specifying which tracker to scrape in scrape_tracker
  • tracker response alerts from user initiated announces/scrapes are now
    posted regardless of alert mask
  • improve DHT performance when changing external IP (primarily affects
    bootstrapping).
  • add feature to stop torrents immediately after checking files is done
  • make all non-auto managed torrents exempt from queuing logic, including
    checking torrents.
  • add option to not proxy tracker connections through proxy
  • removed sparse-regions feature
  • support using 0 disk threads (to perform disk I/O in network thread)
  • removed deprecated handle_alert template
  • enable logging build config by default (but alert mask disabled by default)
  • deprecated RSS API
  • experimental support for BEP 38, "mutable torrents"
  • replaced lazy_bdecode with a new bdecoder that's a lot more efficient
  • deprecate time functions, expose typedefs of boost::chrono in the
    libtorrent namespace instead
  • deprecate file_base feature in file_storage/torrent_info
  • improve piece picker support for reverse picking (used for snubbed peers)
    to not cause priority inversion for regular peers
  • improve piece picker to better support torrents with very large pieces
    and web seeds. (request large contiguous ranges, but not necessarily a
    whole piece).
  • deprecated session_status and session::status() in favor of performance
    counters.
  • improve support for HTTP where one direction of the socket is shut down.
  • remove internal fields from web_seed_entry
  • separate crypto library configuration and whether to support
    bittorrent protocol encryption
  • simplify bittorrent protocol encryption by just using internal RC4
    implementation.
  • optimize copying torrent_info and file_storage objects
  • cancel non-critical DNS lookups when shutting down, to cut down on
    shutdown delay.
  • greatly simplify the debug logging infrastructure. logs are now delivered
    as alerts, and log level is controlled by the alert mask.
  • removed auto_expand_choker. use rate_based_choker instead
  • optimize UDP tracker packet handling
  • support SSL over uTP connections
  • support web seeds that resolve to multiple IPs
  • added auto-sequential feature. download well-seeded torrents in-order
  • removed built-in GeoIP support (this functionality is orthogonal to
    libtorrent)
  • deprecate proxy settings in favor of regular settings
  • deprecate separate settings for peer protocol encryption
  • support specifying listen interfaces and outgoing interfaces as device
    names (eth0, en2, tun0 etc.)
  • support for using purgrable memory as disk cache on Mac OS.
  • be more aggressive in corking sockets, to coalesce messages into larger
    packets.
  • pre-emptively unchoke peers to save one round-trip at connection start-up.
  • add session constructor overload that takes a settings_pack
  • torrent_info is no longer an intrusive_ptr type. It is held by shared_ptr.
    This is a non-backwards compatible change
  • move listen interface and port to the settings
  • move use_interfaces() to be a setting
  • extend storage interface to allow deferred flushing and flush the part-file
    metadata periodically
  • make statistics propagate instantly rather than on the second tick
  • support for partfiles, where partial pieces belonging to skipped files are
    put
  • support using multiple threads for socket operations (especially useful for
    high performance SSL connections)
  • allow setting rate limits for arbitrary peer groups. Generalizes
    per-torrent rate limits, and local peer limits
  • improved disk cache complexity O(1) instead of O(log(n))
  • add feature to allow storing disk cache blocks in an mmapped file
    (presumably on an SSD)
  • optimize peer connection distribution logic across torrents to scale
    better with many torrents
  • replaced std::map with boost::unordered_map for torrent list, to scale
    better with many torrents
  • optimized piece picker
  • optimized disk cache
  • optimized .torrent file parsing
  • optimized initialization of storage when adding a torrent
  • added support for adding torrents asynchronously (for improved startup
    performance)
  • added support for asynchronous disk I/O
  • almost completely changed the storage interface (for custom storage)
  • added support for hashing pieces in multiple threads
  • fix division by zero in super-seeding logic
libtorrent - libtorrent-1.0.9

Published by arvidn over 8 years ago

  • fix issue in checking outgoing interfaces (when that option is enabled)
  • python binding fix for boost-1.60.0
  • optimize enumeration of network interfaces on windows
  • improve reliability of binding listen sockets
  • support SNI in https web seeds and trackers
  • fix unhandled exception in DHT when receiving a DHT packet over IPv6
libtorrent - libtorrent-1.0.8

Published by arvidn almost 9 years ago

  • fix web seed request size
  • fix bug where web seeds were not used for torrents added by URL
  • fix support for symlinks on windows
  • fix long filename issue (on unixes)
  • fixed performance bug in DHT torrent eviction
  • fixed win64 build (GetFileAttributesEx)
  • fixed bug when deleting files for magnet links before they had metadata
libtorrent - libtorrent-1.0.7

Published by arvidn almost 9 years ago

1.0.7 release

* fix bug where loading settings via load_state() would not trigger all
  appropriate actions
* fix bug where 32 bit builds could use more disk cache than the virtual
  address space (when set to automatic)
* fix support for torrents with > 500'000 pieces
* fix ip filter bug when banning peers
* fix IPv6 IP address resolution in URLs
* introduce run-time check for torrent info-sections beeing too large
* fix web seed bug when using proxy and proxy-peer-connections=false
* fix bug in magnet link parser
* introduce add_torrent_params flags to merge web seeds with resume data
  (similar to trackers)
* fix bug where dont_count_slow_torrents could not be disabled
* fix fallocate hack on linux (fixes corruption on some architectures)
* fix auto-manage bug with announce to tracker/lsd/dht limits
* improve DHT routing table to not create an unbalanced tree
* fix bug in uTP that would cause any connection taking more than one second
  to connect be timed out (introduced in the vulnerability path)
* fixed falling back to sending UDP packets direct when socks proxy fails
* fixed total_wanted bug (when setting file priorities in add_torrent_params)
* fix python3 compatibility with sha1_hash
libtorrent - libtorrent-1.0.6

Published by arvidn about 9 years ago

* fixed uTP vulnerability
* make utf8 conversions more lenient
* fix loading of piece priorities from resume data
* improved seed-mode handling (seed-mode will now automatically be left when
  performing operations implying it's not a seed)
* fixed issue with file priorities and override resume data
* fix request queue size performance issue
* slightly improve UDP tracker performance
* fix http scrapes
* add missing port mapping functions to python binding
* fix bound-checking issue in bdecoder
* expose missing dht_settings fields to python
* add function to query the DHT settings
* fix bug in 'dont_count_slow_torrents' feature, which would start too many
  torrents