Releases: aldenml/libtorrent4j
Releases · aldenml/libtorrent4j
2.1.0-31
- update to libtorrent master
- using SWIG 4.1.1
- improved java api layer
- lt:allow to change save path without any additional actions
- lt:allow to change save path without moving any files
- lt:peer_list fix, clear the m_candidate_cache when clear peer_list, and set
m_num_seeds to 0 - lt:schedule DHT announces using milliseconds rather than seconds
- lt:fix issue with web seed connections when they close and re-open
- lt:removing an already removed torrent is a no-op
2.1.0-30
- update to libtorrent master
- add support for Linux arm
- lt:revert and replace fix for proxies supporting IPv6
- lt:make i2p session options configurable
- lt:fix announce_with_tracker assert
- lt:fallocate() not supported is not a fatal error
- lt:fix proxying of IPv6 connections via IPv4 proxy
- lt:fix peer_list to support incoming i2p connections
- lt:treat CGNAT address range as local IPs
- lt:disallow piece layer entries that don't refer to any file in the torrent
- lt:disallow piece layer entries in torrent files that don't compute to their
advertised root hash - lt:validate piece layers against their roots when loading torrents
- lt:tighten up handling of hash checking v2 and hybrid torrents
- lt:cache failed DNS lookups as well as successful ones
- lt:when draining the torrent_info object
- lt:fix scraping of i2p tracker
- lt:minor simplification of i2p socket identification
- lt:store i2p-torrent state in resume data
- lt:disable DHT for i2p torrents
- lt:fix accepting incoming i2p connections
- lt:fix interpretation of non-compact i2p tracker responses
- lt:add base64decode() for i2p alphabet and simplify base32encode()
- lt:make i2p trackers only announce once (not once per listen interface)
- lt:fix i2p SAM parsing of quoted values. and make name lookup failures
non-fatal - lt:expose i2p peer destination (b32 address) in peer_info
- lt:simplify handling of compact tracker responses for i2p trackers
- lt:fix sorting of torrent_peer entries when mixing i2p and non-i2p peers
- lt:make base32encode take a span instead of a string
- lt:fix issue with read_piece() stopping torrent on pieces not yet downloaded
- lt:improve handling of allow_i2p_mixed setting to work for magnet links
- lt:source code cleanup, performance and stability
2.1.0-29
- update to libtorrent master
- fix fetch magnet, save the add_torrent_params as a torrent file
- lt:add need_save_resume field to torrent_status, with the resume data flags
indicating which aspects of a torrent have changed since the last resume
data was saved. Also make only_if_modified flag a combination of the other
flags. - lt:separate only_if_modified flag to save_resume_data
- lt:removing an ephemeral web seed does not affect whether resume data needs
to be saved - lt:allow promoting an ephemeral web seed when adding it
- lt:fix web seed request for renamed single-file torrents
- lt:instead of removing web seed with certain errors, just disable them and
preserve them in the resume data. - lt:improve behavior of save_resume_data() only_if_modified flag to avoid
re-saving the resume data too frequently - lt:port 1 is used as a placeholder for announcing to trackers without the
ability to accept incoming connections - lt:fix issue in retrying trackers in tiers > 0
- lt:fix time_point conversion from/to time_t
- lt:don't throw a std::system_error holding a boost::system::error_code
- lt:source code cleanup, performance and stability
2.1.0-28
- update to libtorrent master
- update to boost 1.81.0
- update to OpenSSL 1.1.1t
- update android NDK r25c
- removed API to manage trackers from torrent info
- make sure trackers and web seed info is saved when fetching a magnet
- lt:minor accounting fix for utp packet pool
- lt:report back the full endpoint of peers removed from the peer list when
applying a port_filter and include it in the peer_blocked_alert - lt:simplify handling of privileged ports setting by untangling it from the
port filter - lt:get close reason apply visitor types
- lt:deprecate storing trackers in torrent_info
- lt:improve I2P support
- lt:updated libdatachannel to v0.18.1 (re-licensed to MPL 2.0)
- lt:fix async_wait() for read and write (used to be null_buffers)
- lt:handle outgoing EOF properly. report eof to the write handler. record
that we're closing. - lt:simplify utp send_reset() a bit
- lt:correct uTP sequence number check for packets past EOF
- lt:minor uTP cleanup and updates to logging
- lt:report EOF to upper layer when receiving a FIN packet, in uTP
- lt:rename eof and eof_seq_nr to indicate in refers to the incoming stream
- lt:fix recently introduced create_torrent::generate_buf() where it failed to
include collections and similar-fields - lt:make status_t a proper flag type, to clean up oversized_file indication
from disk subsystem - lt:source code cleanup, performance and stability
2.1.0-27
- update to libtorrent master
- removed API to create torrents from torrent info
- lt:move towards an immutable torrent_info
- lt:optimize create_torrent::generate_buf()
- lt:changed offer_id length from 16 to 20 for consistency with the JS
implementation - lt:fixed rtc_signaling to use the peer id generated for the torrent
- lt:add async tracker status query, post_trackers()
- lt:add async torrent status query, post_status()
- lt:create_torrent does not need fileroots to be a member to create_torrent
- lt:support loading version 2 of resume data format
- lt:disable alert notification during session destruction
- lt:ensure loading resume data tolerates bitfields that are too large
- lt:post torrent_removed_alert after actually removing it from the disk
subsystem - lt:fix use-after-free in web_peer_connection
- lt:fix issue with torrents that have a piece size not divisible by 16kB
- lt:optimize resume data format to use less space
- lt:add async piece availibility query, post_piece_availibility()
- lt:add async download queue query, post_download_queue()
- lt:add async file_progress query, post_file_progress()
- lt:add async peer_info query, post_peer_info()
- lt:starting torrent, connect to peers found in add_torrent_params
immediately - lt:continue to ack incoming uTP data while finalizing the connection
- lt:fix sending ST_FIN packet while the socket is stalled
- lt:fix uTP streams timing out instead of closing cleanly
- lt:safe usage of strncpy
- lt:prevent sending data on a uTP socket after closing it
- lt:fix m_bytes_in_flight invariant and packet counters in the event of the
UDP socket stalling - lt:fix some disk-io counters. primarily num_read_back
- lt:introduce new API for create_torrent, to phase out the use of
file_storage for creating torrents - lt:clean-up settings_pack default values to be able to return the default
value for un-set settings without a hack - lt:add write_torrent_file_buf() overload for generating .torrent files
- lt:add create_torrent::generate_buf() function to generate into a buffer
- lt:use typesafe flag in (internal) file_status() function parameter
- lt:use typesafe flag in file_status struct, and optimize out a redundant
call to stat() in add_files - lt:resend uTP acks that fail to send due to stalling
- lt:fix copy_file when the file ends with a sparse region
- lt:when the uTP socket stalls, mark failed packets for resend
- lt:add some utility member functions to create_torrent
- lt:fix trackers being stuck after session pause/resume
- lt:fix bug in hash_picker with empty files
- lt:expose mmapped file_open_mode flag
- lt:add option to not memory map files below a certain size
- lt:settings_pack now returns default values when queried for missing
settings - lt:don't drop uTP's cwnd below 1*MSS due to latency
- lt:reset uTP timeout when sending packets
- lt:extend create_torrent object with piece_range(), end_piece() and
total_size() - lt:fall back to full copy if SEEK_HOLE and SEEK_DATA isn't supported
- lt:improve error reporting from file opy and move
- lt:tweak pad file placement to match reference implementation (tail-padding)
- lt:update state when need to save resume data
- lt:support incoming SOCKS5 packets with hostnames as source address, for UDP
trackers - lt:modify the Nagle algorithm to allow one undersized packet in flight at a
time - lt:for efficiency, pick up and send an undersized utp packet if there's room
in the congestion window when 'forcing' a packet - lt:ignore duplicate network interface change notifications on linux
- lt:prevent redundant deferred utp acks from being sent
- lt:don't memory map files smaller than 1 MiB, use pwrite/pread calls
- lt:fix wanted_done/done accounting when force-rechecking
- lt:fix total_want/want accounting when forcing a recheck
- lt:expose userdata via torrent_handle
- lt:introduce setting for using pwrite in mmap_disk_storage
- lt:use pwrite() for writing to files in mmap_storage
- lt:better thread names
- lt:fix merging metadata with magnet links added on top of existing torrents
- lt:add torrent_flag to default all file priorities to dont_download
- lt:make the SOCKS5 client tolerate a domain name in the response to UDP
ASSOCIATE - lt:fix renaming of filenames that are too long for the filesystem
- lt:optimize loading merkle tree mask
- lt:move the creation of directories and retrying opening a file for writing
down the stack - lt:fix destruction order of job-pool and file-pool
- lt:make LSD code avoid using select_reactor
- lt:make UPnP code not use select_reactor
- lt:refactor file_view_pool to allow it to be used with other file objects
than just memory mapped files - lt:remove vectored I/O API from file class
- lt:remove vector I/O API from part file. use single buffers
- lt:open files with no_cache set in O_SYNC mode
- lt:report EOF when attempting to hash off the end of a short file
- lt:factor out hash_zeroes() from mmap_storage
- lt:set file index of errors in readwrite() instead of in every file-op
- lt:change vectored I/O API to single-buffer in readwritev() and posix- and
mmap storage - lt:handle all "fastresume rejected" cases consistently
- lt:make copy_file_range() fall back to manual copy when it fails with EXDEV
- lt:use boost static_vector in disk_completed_queue
- lt:make file_pool_view serialize opening of files, rather than race each
other. When the same file is needed by multiple threads - lt:fix destruction order issue in mmap_disk_io
- lt:don't disconnect peers after accepting 'slack' connections when no longer
above the connection limit - lt:factor out disk job completed queue from mmap_disk_io
- lt:factor out and fix debug disk thread functionality
- lt:make disk_job_pool generic
- lt:make a generic disk job type
- lt:simplify the disk io thread pools and factor more of its logic out
of mmap_disk_io - lt:fix issue where stop-when-ready would not close files
- lt:fixed tracker connections spinning when hostname lookups stall
- lt:improve tailqueue's API to make it clearer and safer
- lt:factor out storage_array from mmap_disk_io
- lt:enable volatile-read for peer connection read requests, when
disk_io_read_mode is disable_os_cache - lt:new scrape_tracker and force_reannounce
- lt:factor out tracker list, enforce unique tracker URLs
- lt:extend write_torrent_file() with a flags parameter, don't include DHT
nodes by default - lt:when over the connection limit, treat partially downloaded but complete
torrents the same as seeds when looking for a peer to replace with a
potentially better one - lt:add torrent_conflict_alert
- lt:fix issue with merging two magnet link torrents into one hybrid
- lt:move the protocol version field for tracker alerts into the
tracker_alert baseclass - lt:use sync_file_range() on linux, when disabling write cache
- lt:post add_torrent_alert after torrent is fully initialized
- lt:interrupt http_connection::on_resolve() for closed connection
- lt:fix file_num_blocks() and file_num_pieces() for empty files
- lt:use default settings in set_piece_hashes
- lt:ut_metadata: don't request the same block more than once every 3
seconds unless the source is disconnected - lt:unify default limits when loading torrents in torrent_info constructor
- lt:add new overload to make_magnet_uri that takes an add_torrent_params
- lt:add missing protocol version to tracker_reply_alert and
tracker_error_alert - lt:fix privilege issue with SetFileValidData()
- lt:add asynchronous overload of torrent_handle::add_piece()
- lt:source code cleanup, performance and stability
2.0.6-26
- using libtorrent master
- added API support to change the disk I/O back-end
- lt:fix MacOS version check for preadv() support
- lt:handle all "fastresume rejected" cases consistently
- lt:default to a single hashing thread, for full checks
- lt:fix bind-to-device for tracker announces and UPnP
- lt:fix bug when checking files and the first piece is invalid
- lt:rename peer_tos -> peer_dscp
- lt:updated libdatachannel to v0.17.1
- lt:simplify part of pe_crypto, init_bt_handshake and stats accounting
- lt:add new alert, oversized_file_alert, posted when an existing file in a
torrent is found to have a greater size than the file according to the
torrent file - lt:make the disk buffer pool implement the buffer_allocator_interface
- lt:send a User-Agent field in HTTP tracker requests in anonymous mode
- lt:fix issue creating v2 torrent from torrent_info with empty file
- lt:make recheck files also update which files use partfile
- lt:add write_through option to disk_io_write_mode
- lt:improve copy_file() to preserve sparse regions on systems supporting
SEEK_HOLE/SEEK_DATA - lt:add function to truncate over-sized files part of a torrent
- lt:set lower memory priority for disk I/O threads on windows
- lt:fix directory creation on windows shared folders
- lt:rename disk_io_job to mmap_disk_job
- lt:set thread names on Haiku
- lt:set thread names on windows
- lt:set thread names on posix
- lt:fix mmap_disk_io shutdown race. We may end up posting new jobs after
starting the shutdown - lt:factor out storage initialization
- lt:add flag to make add_files() not record file attributes
- lt:source code cleanup, performance and stability
2.0.5-25
- using libtorrent master
- lt:deprecate (unused) allow_partial_disk_writes settings
- lt:fix disk-full error reporting in mmap_disk_io
- lt:fix similar torrents feature for v2 torrents
- lt:use MADV_DONTNEED/MADV_COLD for volatile_reads (when checking files)
- lt:use MADV_NOCORE on BSD systems
- lt:fix potential unbounded recursion in add_completed_jobs()
- lt:deprecate (unused) volatile_read_cache setting
- lt:mark read_cache_line_size and write_cache_line_size as deprecated
- lt:fix part files being marked as hidden on windows
- lt:source code cleanup, performance and stability
2.0.5-24
- using libtorrent master
- updated to OpenSSL 1.1.1m
- using android NDK r23b
- updated to boost 1.78.0
- lt:remove redundant calls to convert_from_native() on system error messages
- lt:use UTF-8 encoding for messages coming from boost on Windows
- lt:fix DHT announce timer issue
- lt:set DSCP_TRAFFIC_TYPE socket option on windows
- lt:default TOS marking to 0x04 (LE)
- lt:poll for new endpoints when forcing a tracker announce
- lt:only ever set min_interval on tracker entries based on responses from
trackers - lt:retry all trackers when force announcing
- lt:keep trying to announce to trackers even when all fail
- lt:don't disable announcing from local endpoints because of temporary
failures - lt:improve error reporting when opening files
- lt:fix issue in parsing UPnP XML response with multiple forwarding services
- lt:fix typos in preadv vs. pread detection. add new version of MacOS to
use vector versions - lt:updated libdatachannel to v0.16.1
- lt:tweak mixed mode algorithm to throttle less
- lt:source code cleanup, performance and stability
2.0.5-23
2.0.5-22
- using libtorrent master
- minimum supported Android API >= 24
- fix for new network access restrictions in android 11
- lt:allow unspecified address for android api >= 24
- lt: explicitly FlushViewOfFile() on windows when closing a file and
periodically the file with most dirty bytes - lt:factor out storage index free list from mmap_disk_io and posix_disk_io
- lt:enable close_file_interval by default on windows, set to 240 seconds
- lt:use cached DNS resolver for socks5 proxy
- lt:back-port fix for accepting incoming connections over socks5
- lt:fix issue where incoming uTP connections were not accepted over SOCKS5
- lt:use a more reliable work-around for msvc standard library types whose
move and move-assign operators can throw - lt:overhaul the merkle_tree class in order to allow it to have a
consistent (and well defined) invariant - lt:rename variables, small strengthening of invariant check in merkle_tree
- lt:add special case for single-node merkle trees in load_piece_layer,
to maintain an efficient internal representation - lt:add merkle_get_first_child() overload
- lt:make the token limit when parsing metadata from magnet files
configurable - lt:use ifaddrs for android api >= 24, implement enum_routes with
operation_not_supported - lt:fix stalled pieces on disk-full errors
- lt:fix issue with stalled pieces on disk full errors
- lt:fix logic penalizing peers for sending corrupt data
- lt:remove unintended reserve() call in resolve_links
- lt:fix merkle_tree operator[] and compare_node in the various
memory-optimized modes - lt:slight refactor of logic penalizing peers for sending corrupt data
- lt:guard against self assignment in hasher512 and hasher code
- lt:disable deprecation warnings in code calling OpenSSL SHA1 functions
- lt:fix ambiguous overload of utf8_latin1. Both std::string_view and
boost::json::string_view can be constructed from a boost::json::string - lt:remove unused field on peer_connection, previously used for debugging
- lt:minor logging fixes
- lt:add null checks in iface_from_ifaddrs
- lt:get_torrent_copy_with_hashes() fails if we don't have all the piece
layers yet - lt:don't open the piece in the piece picker if there still are outstanding
hash jobs (to handle write failures) - lt:silence conversion signedness warning on file.cpp
- lt:restore path character encoding conversion for non UTF-8 locales on
linux - lt:sanitize surrogates found in utf-8
- lt:fix for building with boost-1.77 on windows
- lt:fix issue when asking for file progress right when starting a
force-recheck - lt:bump handler allocation sizes for boost-1.77 (linux)
- lt:fix restoring last_seen_complete from resume data
- lt:fix build errors involving unsatisfied constraints
- lt:improve hash request debug logging
- lt:fix uninitialized timestamp in hash-picker requests
- lt:fix issue on macOS where the DHT was not restarted on a network-up
notification - lt:fix use-after-free bug in make_magnet_uri
- lt:fix refactoring bug introduced when turning http_stream handlers into
templates, where buffer read_pos was checked after being used - lt:make remove_torrent flags be treated as flags (instead of an enum)
- lt:removed name-field at root from write_torrent_file()
- lt:source code cleanup, performance and stability