Releases: aldenml/libtorrent4j
Releases · aldenml/libtorrent4j
2.1.0-35
2.1.0-34
2.1.0-33
- update to libtorrent master
- using SWIG 4.3.0
- update to boost 1.86.0
- update to OpenSSL 3.4.0
- update android NDK r27c
- lt:fix performance bug in the file pool, evicting MRU instead of LRU
- lt:fix bug where file_progress could sometimes be reported as >100%
- lt:source code cleanup, performance and stability
2.1.0-32
- update to libtorrent master
- lt:don't hint POSIX_FADV_RANDOM
- lt:allow connections while checking resume data if no_verify_files flag is
set - lt:fix BEP-40 peer priority for IPv6
- lt:limit the piece size in create_torrent constructor
- lt:set m_file_priority early, to make open_file() work as expected.
- lt:don't discard netlink messages for previously seen addresses
- lt:fix issue when closing a uTP connection with a close reason and picking
up a nagle packet. - lt:apply DSCP setting to peers before connecting
- lt:check settings_pack::max_out_request_queue before alerting performance
warning: max outstanding piece requests reached - lt:check settings_pack::max_out_request_queue before alert
outstanding_request_limit_reached - lt:updated libdatachannel to v0.21.2
- lt:make anti-leech choker never increase score for dishonesty
- lt:try encode web seed redirect location
- lt:send read_piece right at the end of piece_passed
- lt:fix integer overflow in piece picker
- lt:try harder to bind TCP and UDP sockets to the same port
- lt:torrent_status::num_pieces counts pieces passed hash check, as documented
- lt:add feature to enable interruption of disk I/O worker threads
- lt:pass in whether a torrent has v1 and/or v2 hashes in storage_params
- lt:reject resume data if it contains mismatching info hashes
- lt:restore file priorities in POSIX storage
- lt:fix the wrong port is being announced to tracker
- lt:allow I2P leaseset encryption type 4
- lt:allow execution of on_unknown_torrent method in the absence of active
torrents - lt:fix assert in uTP resend_packet()
- lt:improve checking and testing of max piece size
- lt:source code cleanup, performance and stability
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