@arvidn arvidn released this Aug 28, 2016 · 14 commits to RC_1_0 since this release

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



@arvidn arvidn released this Aug 23, 2016 · 106 commits to RC_1_1 since this release

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 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



@arvidn arvidn released this Apr 11, 2016 · 231 commits to RC_1_1 since this release

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



@arvidn arvidn released this Feb 28, 2016 · 42 commits to RC_1_0 since this release

  • 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



@arvidn arvidn released this Jan 17, 2016 · 74 commits to RC_1_0 since this release

  • 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



@arvidn arvidn released this Nov 14, 2015 · 102 commits to RC_1_0 since this release

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



@arvidn arvidn released this Jul 30, 2015 · 197 commits to RC_1_0 since this release

* 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