Libtorrent4j Versions Save

libtorrent for java, a swig Java interface for libtorrent

v2.1.0-31

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

v2.1.0-30

1 year ago
  • 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

v2.1.0-29

1 year ago
  • 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

v2.1.0-28

1 year ago
  • 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

v2.1.0-27

1 year ago
  • 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

v2.0.6-26

1 year ago
  • 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

v2.0.5-25

2 years ago
  • 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

v2.0.5-24

2 years ago
  • 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

v2.0.5-23

2 years ago
  • fix windows build, not enable deprecated functions

v2.0.5-22

2 years ago
  • 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