Releases: rakshasa/rtorrent
RTorrent release version 0.16.9
Summary
Improved DNS cache handling and various bug fixes.
Trusted/Untrusted XMLRPC Connection Security Model
Uses UNTRUSTED_CONNECTION SCGI header flag to mark untrusted connections, which restricts the connection to only using whitelisted XMLRPC methods.
Grep rpc::rpc.mark_safe in rtorrent/src/command_*.cc for a list.
SCGI Systemd Socket Activation Support
Allows rtorrent to request systemd for an SCGI socket. Use --with-systemd to enable.
It is not compiled by default and the network.scgi.open_systemd will throw an error when missing.
There is no intention of any further systemd integration beyond a by-default disabled compile-time option.
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
Features
- Improved DNS cache handling by @rakshasa
- Add trusted/untrusted XMLRPC connection security model by @xirvik
- Add support for SCGI systemd socket activation (not compiled by default) by @angularbanjo
Bug Fixes
- Fixed various DNS issues by @rakshasa
- Remove unneeded MSG_NOSIGNAL by @rakshasa
- Read existing flags in torrent::fd_set_nonblock by @angularbanjo
- Re-attach CURL handle during HTTP resolver retry by @CircuitCoder
- Add the missing <unordered_map> header to the DNS cache code by @aeiouaeiouaeiouaeiouaeiouaeiou
- Prevent torrent::internal_error in SessionManager::replace_save_request_unsafe() by @PiloUnk
- Fix resource leaks and minor issues by @sirus20x6
- Fix display/UI crash and correctness bugs by @sirus20x6
RTorrent release version 0.16.8
Summary
This release fixes a couple of bugs and adds a simple DNS cache to improve performance.
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
Features
- Added dns cache by @rakshasa
Bug Fixes
RTorrent release version 0.16.7
Summary
This release fixes various issues with libcurl and polling, and disables libcurl connection cache due to insufficient api to strictly handle sockets events.
DNS Request Buffering and Deduplication
Due to performance issues with udns handling large number of simultaneous request (naive use of linked lists), a dns request buffer was added.
These changes also reduces DNS hammering, and a DNS cache will be added next.
Unbuffered Logging
Added 'log.open_file.flush' and 'log.append_file.flush' that ensure all writes to logs are immediately flushed.
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
Features
- Added a buffer that limits/deduplicates active dns requests by @rakshasa
Bug Fixes
- Properly handle libcurl reuse of sockets by @rakshasa
- Added SocketManager to handle reuse of uninterested fd's by the kernel by @rakshasa
- Removed old work-arounds in epoll and force stricter handling of errors by @rakshasa
- Allow disabling of stream buffering for plaintext logs by @fffe
- Fix some compile warnings by @fffe
- Fix use after free in UdnsResolver::try_resolve_numeric by @anthonyryan1
- Fix crash in DhtRouter::bootstrap by @anthonyryan1
- Fix key/value pairs in Lua by @zedtools
- Expand '~/' to $HOME in session path. by @rakshasa
- dht_add_peer_node is empty, use dht_add_bootstrap_node instead by @mirolm
- Re-send smkx on SIGWINCH to fix arrow keys after terminal reattach by @blaenk
- Allow dht bootstrap nodes to be added when dht is off. by @rakshasa
RTorrent release version 0.16.6
Summary
Session saves are now handled in a separate thread.
When a session save is triggered, all downloads are added to a queue that builds the session data 16 at a time in parallel. Those are then queued to be written and sync'ed to disk 16 at a time. During shutdown, 64 downloads in parallel are processed.
Only the process of building the session data blocks the main thread.
Magnet Link Handling
Downloading of magnet links now save the metadata file to session directory by default.
This can be overridden by 'magnet.path.set'.
When deleting the download, the metadata file is also deleted if it resides in the session directory.
New Timestamp Helper Commands
Added '.or_zero' and '.elapsed' commands for 'd.timestamp.started' and 'd.timestamp.finished'.
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
Features
- Added timestamp helper commands by @rakshasa
- Use separate thread for saving session data by @rakshasa
- Run multiple session save requests in parallel by @rakshasa
- Changed magnet metadata handling and added 'magnet.path.set' by @rakshasa
Optimizations
- Use map rather than vector for Poll tables by @rakshasa
Bug Fixes
RTorrent release version 0.16.5
Summary
Fixes 100% CPU usage bug in kqueue event handler and UDNS resolver.
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
RTorrent release version 0.16.4
Summary
This release contains several bug fixes and minor improvements.
Replaces 0.16.3 which had a http request related bug.
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
Features and Improvements
- Partial tracker peer update. by @rakshasa
- Added Object type names and improved type check exception message. by @rakshasa
- Valgrind suppressions file for macos. by @rakshasa
Bug Fixes
- Fixed callback cancel bug and numeric IPv4/6 lookup issues in CurlGet by @rakshasa
- Check if AF_INET6 is supported, or else block IPv6 traffic. by @rakshasa
- Allow page size to be between 4k and 256k. by @rakshasa
- Remove throttle from DHT. by @rakshasa
- Fail configure if neither kqueue nor epoll are defined. by @rakshasa
- Cleanup DHT and fixed INET6 bug by @rakshasa
- Fix various polling/socket issues. by @rakshasa
- Various CurlGet fixes. by @rakshasa
- Push back views explicitly takes a string. by @rakshasa
RTorrent release version 0.16.2
Summary
This release contains several bug fixes and improvements to IPv4/6 handling.
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
Features and Improvements
- Removed CurlGet's timeout and rely only on libcurl. by @rakshasa
- Added dual listening ports when both IPv4 and IPv6 are bound. by @rakshasa
- Reopen listen sockets when changing bind addresses. by @rakshasa
Bug Fixes
- scripts/common.m4: Insert spaces in shell lists by @kraj
- Properly handle ECONNABORTED from accept(). by @rakshasa
- Run OpenBSD in unit tests workflow by @ikmckenz
- Fixed issue with CURL socket not being removed from polling. by @rakshasa
- Fixed PEX address corruption bug. by @rakshasa
- Don't use encrypted connections for metadata downloads. by @rakshasa
- Chore/update logging docs by @adenwuts
- Export 'group2.*' commands that were mistakenly deprecated. by @rakshasa
RTorrent release version 0.16.1
Summary
Network Configuration Changes
Network configuration has been rewritten and IPv6, bind and local address handling improved.
network.bind_address.ipv4.setnetwork.bind_address.ipv6.setnetwork.local_address.ipv4.setnetwork.local_address.ipv6.set
The above commands have been added to set bind and local addresses for IPv4 and IPv6, while the old commands auto-detect the address family and sets one while clearing the other.
If only one of either IPv4 or IPv6 is set, then the other protocol is disabled. If both are set, both are used as appropriate.
dht.override_port.set
DHT now tries to open the same port as the listen port by default. This can be overridden with the above command.
network.block.outgoing.set
This command can be used to block outgoing peer connections.
HTTP Connection Reuse
HTTP connections are now reused, with the following new commands to control the limits:
- network.http.max_cached_connections.set
- network.http.max_host_connections.set
- network.http.max_total_connections.set
The limits are based on the max open sockets (ulimit) at the time libtorrent initializes.
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
Features and improvements
- Added NetworkConfig. by @rakshasa
- Improved listen/dht port handling and added 'dht.override_port.set' command. by @rakshasa
- Remove deprecated rak::socket_address. by @rakshasa
- Remove deprecated no-target flags for commands. by @rakshasa
- Added 'network.block.outgoing.set'. by @rakshasa
- Added 'network.{bind,local}_address.ipv{4,6}.set' commands. by @rakshasa
- Reuse HTTP connections and added totale/cached connection limits. by @rakshasa
- Added local address commands for inet/inet6. by @rakshasa
Bugfixes
- Check if target is null in xmlrpc_to_object(). by @rakshasa
- Fix VLA warnings by @Auska
- Mention OpenBSD in mincore error msg by @ikmckenz
- Include netinet/in.h before ip.h for portability by @ikmckenz
- Fix unit test if compiled without instrumentation by @ikmckenz
- Fixed UDP tracker making unnecessary DNS lookups on blocked protocols. by @rakshasa
RTorrent release version 0.16.0
Summary
This release moves libcurl dependency to libtorrent and makes http requests in a separate thread. The network.block.* commands now work properly for IPv4/6, although IPv6 support still has some issues.
DHT has been fixed and magnet links without any embedded trackers should now work properly.
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
Features and improvements
- Moved curl to libtorrent. by @rakshasa
- Add emacs and vi keymap config logic by @fredriklindell
- Converted curl/http to be thread-safe. by @rakshasa
- Added network.block.ipv4in6.set command. by @rakshasa
- Invert color of focus ui element. by @rakshasa
- Various code cleanups by @neheb
- Properly use ipv4/6/4in6 block connection manager filter. by @rakshasa
- Block ipv4/6 now sets the resolve type
- Documentation tidy by @beadon
- lua: Extend
insert_lua_method()by @PRESFIL
Bugfixes
- Fix DHT bind and peer parsing by @rakshasa
- Fix ExecFile waitpid error handling. by @rakshasa
- Fix file descriptor leak in session file saving with system.files.session.fdatasync set to no by @philrosenthal
- Fix download views by @rakshasa
- lua: Fixes and improvements by @PRESFIL
- Fixed DHT bind address and converted to using sockaddr. by @rakshasa
- Fixed uninitialized rpc slots when SCGI is not used. by @rakshasa
- When encountering invalid completed chunks value in session files ignore it. by @rakshasa
- Fixed CURL timeout bug and general improvements to locking. by @rakshasa
- Fixed check for atomic libs. by @rakshasa
- Remove DhtServer from event_write when drop_packet() results in empty… by @rakshasa
- Use getaddrinfo for numeric hostname lookups in UdnsResolver. by @rakshasa
- Fixed closing of external fd's and potential race-conditions in CurlStack::close_get(). by @rakshasa
RTorrent stable release version 0.15.7
Summary
Fixes DHT.
Based on the stable-0.15 branch, which marks this as a stable release.
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
- Fixed DHT bind and peer address parsing.