Repository navigation
Releases: Auska/rtorrent-static-binary
Release list
rTorrent v0.16.25
Summary
This release includes various bugfixes and minor improvements as part of a stable series of releases.
Reverted to Legacy UTF-8 Name/Path Handling
Partially reverted UTF-8 handling to old behavior, and name.utf-8 and path.utf-8 values (if present) will be used to ensure compatibility with older torrents.
Can be turned off with system.file_name.allow_legacy_utf8.set=false.
Development Funding
Current development relies on donations, and as such is highly appreciated.
Donations make futher development possible, and as such are highly appreciated:
- Paypal
- Patreon
- SubscribeStar
- Bitcoin: 1MpmXm5AHtdBoDaLZstJw8nupJJaeKu8V8
- Ethereum: 0x9AB1e3C3d8a875e870f161b3e9287Db0E6DAfF78
- Litecoin: LdyaVR67LBnTf6mAT4QJnjSG2Zk67qxmfQ
- Cardano: addr1qytaslmqmk6dspltw06sp0zf83dh09u79j49ceh5y26zdcccgq4ph7nmx6kgmzeldauj43254ey97f3x4xw49d86aguqwfhlte
What's Changed
Bug Fixes / Cleanup / Improvements
- Reject loopback, link-local and private addresses from remote peer lists by @xirvik
- Reject torrents with more chunks than the chunk index can address by @xirvik
- Use a large state engine for UDP tracker transaction ids by @xirvik
- Seed udns query ids from the system entropy source and require the QR flag by @xirvik
- Fix the signal mask and the reported cause on a chunk write bus error by @xirvik
- TrackerHttp: don't clobber m_current_family when there is no next family to try by @axolotty
- Fix size_pex accounting leaks that abort ~DownloadMain on erase by @xirvik
- Clear the requesting flag on a scrape failure by @noctuum
- Keep an unprocessed extension message for a retry by @noctuum
- Cap the number of info hashes the DHT keeps peer lists for by @xirvik
- Re-read memory usage after try_free_memory by @noctuum
- Bound the id_hex log reads to the array's 40 characters by @xirvik
- Do not arm a plaintext retry the stream forbids by @noctuum
- Log event_read storage errors as storage errors by @noctuum
- configure: Enable large-file support by @zippy2
- Accept magnet links that also carry a v2 hash by @noctuum
- Do not credit a chunk to the file that follows it by @noctuum
- Restore the part number in split file names by @noctuum
- Re-queue an interested peer when it is unsnubbed by @noctuum
- Log the first family's announce failure before the second family is tried by @silasmariusz
- Added legacy UTF-8 torrent name and path handling. by @rakshasa
- Range-check global throttle rates before narrowing them to kB. by @xirvik
- Bound JSON-RPC input by size and nesting depth by @xirvik
- rpc: require methodName as a multicall struct's first member by @xirvik
- Write session files with O_NOFOLLOW and mode 0600 by @xirvik
- Guard download pointers against event handlers that erase the download by @xirvik
- Make SessionManager::m_active atomic by @xirvik
- Sync the session directory after committing the renames by @xirvik
- Stop at max_active in scheduler.simple.removed by @noctuum
- Guard control in the main catch handlers by @noctuum
- Limit tab completion to text before the cursor by @noctuum
- Reject an empty argument list in execute_lua by @noctuum
- Check pthread_sigmask by its return value by @noctuum
- Sort the transfer chunks by index by @noctuum
- Check first against last in parse_object by @noctuum
- Reset the freed pointers in XmlRpc::cleanup by @noctuum
- Remove code that has no remaining user by @noctuum
- Read the unpacked object in the raw string case by @noctuum
- Check m_entry against size() in set_entry by @noctuum
- Do not switch an active download to initial_seed by @noctuum
- Mark the system.file.allocate getter untrusted-safe, because d.open reads it by @silasmariusz
- Reject out-of-range RPC values instead of narrowing them silently by @xirvik by @rakshasa
- execute: room for a couple of hundred trackers' URLs in one event handler's arguments by @silasmariusz
- Added legacy UTF-8 torrent name and path handling. by @rakshasa
- Align the XML-RPC command stack so torrent::Object is not built on a 4-byte boundary by @silasmariusz
Static binaries built on: Alpine Linux 3.24.2
rTorrent v0.16.24
Summary
This release includes various bugfixes and minor improvements as part of a stable series of releases.
Fixed bind address syntax
Removed the custom ip%device syntax for binding to a specific device, and replaced it with with network.bind_device.set and network.bind_device.ipv{4,6}.set commands.
Development Funding
Current development relies on donations, and as such is highly appreciated.
Donations make futher development possible, and as such are highly appreciated:
- Paypal
- Patreon
- SubscribeStar
- Bitcoin: 1MpmXm5AHtdBoDaLZstJw8nupJJaeKu8V8
- Ethereum: 0x9AB1e3C3d8a875e870f161b3e9287Db0E6DAfF78
- Litecoin: LdyaVR67LBnTf6mAT4QJnjSG2Zk67qxmfQ
- Cardano: addr1qytaslmqmk6dspltw06sp0zf83dh09u79j49ceh5y26zdcccgq4ph7nmx6kgmzeldauj43254ey97f3x4xw49d86aguqwfhlte
What's Changed
Bug Fixes / Cleanup / Improvements
- Clean up a peer connection dropped on setup by @noctuum
- Remove unused declarations, functions and members by @noctuum
- Fix the last metadata piece length by @noctuum
- Check the size of a DHT cache contact entry by @noctuum
- Free the pending extension message on destruction by @noctuum
- Do not truncate the metadata reject message by @noctuum
- Rebuild the indirect links on every open by @noctuum
- Lock the interval writes in TrackerDht by @noctuum
- Create the root directory on a retried open by @noctuum
- Remove the self reference stored in DhtSearch by @noctuum
- Break the DHT transaction and packet cycle by @noctuum
- Use explicit device name binding rather than a custom syntax. by @rakshasa
- Fix DHT announce_peer port endianness in compact peer storage by @rakshasa
- Queue the completed event if no tracker is in use by @noctuum
- Move the stalled requests when the peer chokes by @noctuum
- Wait on the observed count in FdCloseQueue by @noctuum
- Sanitize tracker failure and scrape messages at the TrackerList sink by @xirvik
- Bound dictionary nesting depth in the static map bencode parser by @xirvik
- Pass the missing DHT port argument to the restart-failure log by @xirvik
- Close the log output when a log_buffer is destroyed by @xirvik
- Make the Chunk buffer range checks wrap-safe by @xirvik
- Fix one-byte overflow of the domain name buffer in udns dns_getdn by @xirvik
- Always return a replacement candidate from a non-empty DHT bucket by @xirvik
- Add a change counter to ConnectionList by @xirvik
- Range check ProtocolBuffer::consume by @xirvik
- Fix three log format argument mismatches by @xirvik
- Keep reading inotify events after an entry with no name by @xirvik
- Fix least active cache being filled with files that were just closed by @xirvik
- Delete the transfer when a peer has no connection to cancel it by @xirvik
- Free the udns result the resolver callbacks take ownership of by @xirvik
- Fix heap overflow writing the question name of a compressed DNS reply by @xirvik
- Check the info-hash target in p.call_target by @noctuum
- Use empty_visible in the view focus movers by @noctuum
- Clamp the negative width in wstring_width by @noctuum
- Do not reschedule a deleted scheduler item by @noctuum
- Guard the value iterator in method.insert.list by @noctuum
- Release the xmlrpc array item on a throw by @noctuum
- Call the target deleter in the tinyxml2 backend by @noctuum
- Reject an over-long line instead of truncating by @noctuum
- Check the flush on the dht cache and history by @noctuum
- Take ownership of the magnet metadata object by @noctuum
- Reject a throttle rate that does not parse by @noctuum
- Release the scgi task buffer on close by @noctuum
- Increment d.state_counter on pause by @noctuum
- Own the download factory until commit by @noctuum
- Use explicit device name binding rather than a custom syntax. by @rakshasa
- Reject an over-long or empty object_storage key by @noctuum
- Report a failed write in log.vmmap.dump by @noctuum
- Own the fault string in xmlrpc_error_c by @noctuum
- Reject a throttle rate that overflows by @noctuum
- Dispatch view.event_added over the added half of the changed range by @xirvik
- Check the argument count before indexing config comment log args by @xirvik
- Answer an oversized RPC response with a fault by @xirvik
- Keep starting when the DHT cache file is rejected by @xirvik
- Give network.xmlrpc.size_limit.set a floor by @xirvik
- Fix data race reading the log buffer from the display thread by @xirvik
- Stop printing a strerror of si_errno in the SIGBUS dump by @xirvik
- Fix use-after-free when p.multicall commands disconnect peers by @xirvik
- Drop the address range parser and its includes, dead since 29edda2f by @xirvik
- Dump the ipv4 filter by reference instead of copying the whole map by @xirvik
- Stop the value command on the untrusted-safe allowlist crashing the daemon by @xirvik
- Pass the typed download filter as an argument, not command text by @xirvik
- Keep the object_storage key terminator inside the key buffer by @xirvik
Static binaries built on: Alpine Linux 3.24.2
rTorrent v0.16.23
Summary
This release includes various bugfixes and minor improvements as part of a stable series of releases.
New bind address syntax
Adding device name to bind addresses is now supported, e.g. 0.0.0.0%eth1, 1.2.3.4%eth1, ::%eth1 and %eth1.
Supported on Linux, OpenBSD and macOS. Only numeric rtable indexes are supported on OpenBSD.
Development Funding
Current development relies on donations, and as such is highly appreciated.
Donations make futher development possible, and as such are highly appreciated:
- Paypal
- Patreon
- SubscribeStar
- Bitcoin: 1MpmXm5AHtdBoDaLZstJw8nupJJaeKu8V8
- Ethereum: 0x9AB1e3C3d8a875e870f161b3e9287Db0E6DAfF78
- Litecoin: LdyaVR67LBnTf6mAT4QJnjSG2Zk67qxmfQ
- Cardano: addr1qytaslmqmk6dspltw06sp0zf83dh09u79j49ceh5y26zdcccgq4ph7nmx6kgmzeldauj43254ey97f3x4xw49d86aguqwfhlte
What's Changed
Cleanup / Improvements
- Added
1.2.3.4%eth1and%eth1syntax for bind addresses. by @rakshasa
Bug Fixes
- Fixed tracker error messages and cleaned up peer ids by @rakshasa
- Avoid double-decrementing
Block::m_notStalledfor dissimilar transfers by @rakshasa - Bumped scgi max content length to 64mb by @rakshasa
- Add missing headers for libcxx-23 by @PPN-SD
- Handle ENOBUFS error as retry-able by @milenlz
- Fix false "Session data is invalid" error when loading downloads with empty URI by @jakobbg
- Initialize FileStat's stat buffer to avoid reading indeterminate values by @noctuum
- Do not skip every other node in ChunkList::find_address by @noctuum
- Fix 32-bit overflow in FileList::chunk_index_position(). by @noctuum
- Fix cidr /32 ip filter entries covering everything above the address by @noctuum
- Fix a one byte write past address_copy in ipv4_range_parse by @noctuum
- Fix a use after free in the xmlrpc-c index path by @noctuum
- Remove unused declarations from DownloadMain. by @noctuum
- Restore the filename in FileList::open error messages. by @noctuum
- Remove the duplicate is_all_set check in calc_wanted_chunks. by @noctuum
- Initialize and clear MemoryChunk's protection flags, drop the unused m_flags by @noctuum
- Set file flags explicitly in Download::open instead of only adding them. by @noctuum
- Clamp the log line against the space left in the buffer. by @noctuum
- Check for end() before dereferencing the iterator in extents. by @noctuum
- Remove the unreachable throw in send_pex_message. by @noctuum
- Fix stale iterator use in UdpRouter::transfer by @noctuum
- Do not skip the pex buffer copy on continue by @noctuum
- Narrow the ipv6 options in Listen::open_both by @noctuum
- Release the zlib deflate state in gzip_compress_to_vector by @noctuum
- Check the flush and sync on session file writes by @noctuum
Static binaries built on: Alpine Linux 3.24.1
rTorrent v0.16.22
Summary
This release includes various bugfixes and minor improvements as part of a stable series of releases.
New Commands
Use system.file_name.replace_slash.set and system.torrent_name.use_sanitized.set to replace
forward slashes in download and file names, defaults to _ and is disabled by using an empty string.
Development Funding
Current development relies on donations, and as such is highly appreciated.
Donations make futher development possible, and as such are highly appreciated:
- Paypal
- Patreon
- SubscribeStar
- Bitcoin: 1MpmXm5AHtdBoDaLZstJw8nupJJaeKu8V8
- Ethereum: 0x9AB1e3C3d8a875e870f161b3e9287Db0E6DAfF78
- Litecoin: LdyaVR67LBnTf6mAT4QJnjSG2Zk67qxmfQ
- Cardano: addr1qytaslmqmk6dspltw06sp0zf83dh09u79j49ceh5y26zdcccgq4ph7nmx6kgmzeldauj43254ey97f3x4xw49d86aguqwfhlte
What's Changed
Cleanup / Improvements
- Optionally sanitize download and file names by replacing slash with underscore by @rakshasa
- Close idle open fds in file_manager by @j-c-m by @rakshasa
- Add DHT peer nodes learned from the peer protocol PORT message by @xirvik
- Expose system.files.close_idle for FileManager idle FD timeout by @j-c-m by @rakshasa
Bug Fixes
- Reject leading zeros in a bencode integer regardless of sign by @xirvik
- Don't pass a negative char to the ctype functions by @xirvik
- Rebuild the log cache and shift group outputs when closing an output by @xirvik
- Fix tracker announce stalls with active scrapes by @szab100 by @rakshasa
- Fix reconnect race after handshake drop on inactive download by @j-c-m by @rakshasa
- Added v4/v6 prefix to http/udp tracker error messages by @rakshasa
- scheduler.h: fix build with Clang <17 by @aeiouaeiouaeiouaeiouaeiouaeiou
- Fix touching of each page in hard Chunk::preload walk by @rakshasa
- Return m_use_fsyncdisk from SessionManager::use_fsyncdisk by @xirvik
- Fix/log append gz flag by @xirvik
- Warn that pieces.sync.timeout_safe.set is no longer supported by @xirvik
- Reject an XMLRPC size limit above the SCGI content size limit by @xirvik
- Keep d.state and the started view in agreement when the core stops a download by @noctuum
- gzip.h: fix build with Clang <17 by @aeiouaeiouaeiouaeiouaeiouaeiou
Static binaries built on: Alpine Linux 3.24.1
rTorrent v0.16.21
Summary
This release includes various bugfixes and minor improvements as part of a stable series of releases.
New Commands
Various string.* commands for text manipulation, see rakshasa/rtorrent#1916 for more.
Variants of path related commands that return the realpath, see rakshasa/rtorrent#1918 for more.
Added system.sockets.<category>.max_alloc_limit and system.sockets.<category>.min_alloc_limit commands.
Development Funding
Current development relies on donations, and as such is highly appreciated.
Donations make futher development possible, and as such are highly appreciated:
- Paypal
- Patreon
- SubscribeStar
- Bitcoin: 1MpmXm5AHtdBoDaLZstJw8nupJJaeKu8V8
- Ethereum: 0x9AB1e3C3d8a875e870f161b3e9287Db0E6DAfF78
- Litecoin: LdyaVR67LBnTf6mAT4QJnjSG2Zk67qxmfQ
- Cardano: addr1qytaslmqmk6dspltw06sp0zf83dh09u79j49ceh5y26zdcccgq4ph7nmx6kgmzeldauj43254ey97f3x4xw49d86aguqwfhlte
What's Changed
Cleanup / Improvements
- Add string.* commands for text manipulation by @kunalkakade
- Add realpath variants of the commands that return paths by @kunalkakade
- Add system.sockets..max_alloc_limit. by @xirvik
- Add system.sockets..min_alloc.limit. by @xirvik
Bug Fixes
- rpc: do not dereference a null result from the xmlrpc-c registry. by @xirvik
- Fix garbage throttle values
- Update config files
- ui: bound the input history size. by @xirvik
- Do not fail startup on unreadable session files. by @xirvik
- Link against libatomic when 64-bit atomics require it by @kunalkakade
- Close the connection when an SCGI header does not fit the buffer. by @xirvik
- Catch every json exception when processing a JSONRPC request. by @xirvik
- Check the focus iterator before dereferencing it on erase. by @xirvik
- Let the choke group list own its groups. by @xirvik
- Limit the padding string.rpad and string.lpad will build. by @xirvik
- Do not dereference missing text nodes
- Update rtorrent.rc.lua-example to use
network.listen.port.xcommands by @jereynolds - Add schedule.if_absent for clients that re-register periodic tasks. by @xirvik
- Fixed '-i ' command line argument. by @rakshasa
- Let the download list own its downloads through a shared pointer. by @xirvik
- Add network.local_port commands for tracker port reporting by @Auska
- Add a depth limit to json_to_object. by @xirvik
- Add a depth limit to the command parser. by @xirvik
- Reject division overflow
- Range check the socket allocation and size values. by @xirvik
- Guard the unit multiplication
- Add a timeout to scgi tasks. by @xirvik
- Check flag_public_rpc when dispatching jsonrpc calls. by @xirvik
- Mark view.list and system.time as untrusted safe. by @xirvik
- Clamp the elapsed time conversion instead of overflowing. by @xirvik
- Guard the value suffixes against negative overflow. by @xirvik
- data: check for an empty path before dereferencing it
- tracker: do not abort on a zero-length or failed datagram read. by @xirvik
- runtime: fix the argument count
- Refuse a category allocation above its limit instead of aborting. by @xirvik
- net: throw the udns submit failure by value. by @xirvik
- dht: restrict the length of tokens we echo back. by @xirvik
- Refuse a files allocation outside what the file manager accepts. by @xirvik
- dht: skip a node with an any address instead of throwing. by @xirvik
- Do not abort on values and state an RPC caller controls. by @xirvik
- Do not allocate a bencode string before reading it by @xirvik by @rakshasa
- Bound the piece skip read to the null buffer size. by @xirvik
- Do not dereference the end iterator when updating group iterators. by @xirvik
- Reject a meta-download that also carries file entries. by @xirvik
- Bound the range passed to update_range by the bitfield size. by @xirvik
- Encode a negative bencode value without negating the minimum. by @xirvik
- Check the file length sum before it overflows. by @xirvik
- Reject a torrent with an empty name instead of aborting. by @xirvik
- Reject a torrent with duplicate or nested file paths. by @xirvik
- network: add local port override for tracker announces by @Auska
- Fix outgoing handshake rejecting a plaintext stream. by @xirvik
- Reject a negative length
- Validate the piece length before narrowing it. by @xirvik
- Pad the Diffie-Hellman shared secret to the full key width. by @xirvik
- Load the dht hash key without assuming alignment. by @xirvik
- Don't dereference an empty peer list when building a ut_pex message. by @xirvik
- Restore the SIGBUS handler on every path out of Chunk::from_buffer. by @xirvik
- Refresh the thread cached time after polling, before dispatching events. by @xirvik
- Reject a bencode string length that does not fit
- Detect overflow when reading a bencode integer
Static binaries built on: Alpine Linux 3.24.1
rTorrent v0.16.20
Summary
This release includes various bugfixes and minor improvements. Either this or the next release will be marked as stable, and could use some testing.
Later releases will continue the cleanup of commands and refactoring of code, so will likely be unstable and/or incompatible with webuis for a while.
Development Funding
Current development relies on donations, and as such is highly appreciated.
Donations make futher development possible, and as such are highly appreciated:
- Paypal
- Patreon
- SubscribeStar
- Bitcoin: 1MpmXm5AHtdBoDaLZstJw8nupJJaeKu8V8
- Ethereum: 0x9AB1e3C3d8a875e870f161b3e9287Db0E6DAfF78
- Litecoin: LdyaVR67LBnTf6mAT4QJnjSG2Zk67qxmfQ
- Cardano: addr1qytaslmqmk6dspltw06sp0zf83dh09u79j49ceh5y26zdcccgq4ph7nmx6kgmzeldauj43254ey97f3x4xw49d86aguqwfhlte
What's Changed
Cleanup / Improvements
- Added WaitpidQueue to handle background process reaping by @rakshasa
- Add system.sockets.min_generic, .reserved and .available commands by @xirvik
- Expose the socket allocation budget through SocketManager by @xirvik
- Cleaned up PeerConnection related code by @rakshasa
Bug Fixes
- Bound size of HTTP tracker scrape responses by @acts-1631
- Bound number of DHT packet processing by @acts-1631
- Fix deprecated command redirects (rtorrent -D) by @maksverver
- system: keep the pipe fds SpawnProcess::execute() creates for capture by @xirvik
- Fix github workflows by @rakshasa
Static binaries built on: Alpine Linux 3.24.1
rTorrent v0.16.19
Summary
This release includes various bugfixes and minor improvements.
Development Funding
Current development relies on donations, and as such is highly appreciated.
Donations make futher development possible, and as such are highly appreciated:
- Paypal
- Patreon
- SubscribeStar
- Bitcoin: 1MpmXm5AHtdBoDaLZstJw8nupJJaeKu8V8
- Ethereum: 0x9AB1e3C3d8a875e870f161b3e9287Db0E6DAfF78
- Litecoin: LdyaVR67LBnTf6mAT4QJnjSG2Zk67qxmfQ
- Cardano: addr1qytaslmqmk6dspltw06sp0zf83dh09u79j49ceh5y26zdcccgq4ph7nmx6kgmzeldauj43254ey97f3x4xw49d86aguqwfhlte
What's Changed
Cleanup / Improvements
- Added 'log.print' by @fffe
- Added a least active cache to FileManager by @rakshasa
- Performance improvements to size IDLE peer reads to the piece header by @j-c-m
- Mark d.timestamp.started as safe by @simonc56
Bug Fixes
- Reject truncated integers in bencode skip parser by @acts-1631
- Limit tracker peer insertion to available-list capacity by @acts-1631
- Limit queued upload requests per peer by @acts-1631
- Reject truncated magnet URI parameters by @acts-1631
- Use optional for request-list piece affinity by @j-c-m
- Implement ChunkSelector::advance_position by @j-c-m
- Avoid blocking on fd close using a separate thread by @j-c-m
- Fix FileManager::detach least active cache fix by @j-c-m
- Don't throw when a start callback outlives its CurlGet by @xirvik
- Don't close unopened files when FileList::open() fails by @xirvik
- Reject over-budget socket allocations with input_error instead of internal_error by @xirvik
- Fix group..ratio.disable calling a removed command by @xirvik
- Break the CurlGet self-reference cycle in HttpGet slots by @moontwister
- Fix FileManager check if the file can be closed by @jmakovicka
Static binaries built on: Alpine Linux 3.24.1
rTorrent v0.16.18
Summary
Encryption settings have changed to be easier to use, and changing listen or DHT ports can be done while rtorrent is running.
Encryption Policy
protocol.encryption.set = <policy>
protocol.encryption.set = handshake_<policy>, stream_<policy>
Where <policy> is deny, allow, prefer or require.
See https://github.com/rakshasa/rtorrent/wiki/Protocol-Encryption-Configuration
Changing Listen and DHT Ports
network.listen.port.set = 6900
dht.override_port.set = 6901
Changing listen port restart both listen and DHT ports, unless dht.override_port has been set.
Development Funding
Current development relies on donations, and as such is highly appreciated.
Donations make futher development possible, and as such are highly appreciated:
- Paypal
- Patreon
- SubscribeStar
- Bitcoin: 1MpmXm5AHtdBoDaLZstJw8nupJJaeKu8V8
- Ethereum: 0x9AB1e3C3d8a875e870f161b3e9287Db0E6DAfF78
- Litecoin: LdyaVR67LBnTf6mAT4QJnjSG2Zk67qxmfQ
- Cardano: addr1qytaslmqmk6dspltw06sp0zf83dh09u79j49ceh5y26zdcccgq4ph7nmx6kgmzeldauj43254ey97f3x4xw49d86aguqwfhlte
What's Changed
Cleanup / Improvements
- Changing listen/dht port reopens listening/dht ports by @rakshasa
- Use new encryption modes by @rakshasa
Bug Fixes
- Reordered http queue slots to avoid race conditions by @rakshasa
- Fixed command_base t_pod align static asserts by @rakshasa
- Fix libcurl verification order to ensure errno is properly shown by @rakshasa
- Fixed missing iteration in mark_and_disconnect by @rakshasa
- Use both listening ports and block_ipv4in6 when no bind address is set by @rakshasa
- Accept blocking libcurl internal eventfd in verify_libcurl_internal_wakeup by @xirvik
- Fix typo in log group name: connection_handshake by @j-c-m
Static binaries built on: Alpine Linux 3.24.1