Skip to content

Releases: rakshasa/rtorrent

RTorrent release version 0.16.9

06 Apr 14:30

Choose a tag to compare

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

RTorrent release version 0.16.8

15 Mar 17:34

Choose a tag to compare

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

Bug Fixes

  • Fix crash on double scrape request by @adenwuts
  • Use callback in DnsBuffer result and catch EINTR in Listen by @rakshasa
  • Fixed various SCGI issues by @rakshasa

RTorrent release version 0.16.7

04 Mar 11:07

Choose a tag to compare

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

02 Jan 15:20

Choose a tag to compare

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

  • Convert IPv4in6 addresses to IPv4 in outgoing handshakes by @rakshasa
  • Force clear bitfield ranges of downloads that get hashed by @rakshasa
  • Use CURLOPT_CLOSESOCKETFUNCTION to properly handle libcurl closing sockets before CURL_POLL_REMOVE by @rakshasa

RTorrent release version 0.16.5

02 Dec 21:18

Choose a tag to compare

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

  • Flush kevent changes before closing an Event by @rakshasa
  • Refactored UdnsResolver and don't forward-declare udns structs by @rakshasa

RTorrent release version 0.16.4

25 Nov 11:11

Choose a tag to compare

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

04 Nov 20:04

Choose a tag to compare

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

16 Oct 09:53

Choose a tag to compare

Summary

Network Configuration Changes

Network configuration has been rewritten and IPv6, bind and local address handling improved.

  • network.bind_address.ipv4.set
  • network.bind_address.ipv6.set
  • network.local_address.ipv4.set
  • network.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

05 Sep 09:57
65906a0

Choose a tag to compare

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

05 Sep 08:03

Choose a tag to compare

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.