github rakshasa/rtorrent v0.16.13
RTorrent release version 0.16.13

6 hours ago

Summary

Added support for base64 support for non-UTF8 strings

Internally torrent::Object now supports a hex/base64 flag for string, which XMLRPC/JSON/LUA can use to return hex or encoded binary/base64 data.

*.hex
*.base64
*.base64_as_binary
*.as_binary
*.or_base64
*.or_as_binary

d.base_path.*
d.base_filename.*
d.name.*
f.path_components.*
f.frozen_path.*

Some commands now have variants that return hex or base64 encoded strings, always or only if the string is not UTF-8.

Any as_binary command will be converted to base64/binary by xmlrpc or jsonrpc.

Ready directory watch support

Added directory.watch.ready for more robust torrent watch folder event handling.

This uses IN_MOVED_TO | IN_CLOSE_WRITE and cached file information to trigger events.

Per-category socket limits

Added support for per-category socket limits in SocketManager, and used it to separate SCGI, tracker, internal, files and peer categories.

New callback system

Old callback and signal_bitfield systems have been completely replaced by a much more efficient and safe callback system.

All callbacks are now shared_ptr to atomic integers and invalidation only requires incrementing the integer, with minimal locking and conditional waiting when there is a conflict.

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 support base64 support for non-UTF8 strings by @rakshasa
  • Add directory.watch.ready for safe torrent watch folders by @tonimelisma
  • Add add per-category allocation limits to socket_manager by @trim21
  • Added a new clean and efficient callback mechanism by @rakshasa
  • Converted callbacks to new interface. by @rakshasa in rakshasa/libtorrent#730
  • Use shared_ptr to atomic<uint32_t> as callback_id and added a deadlock prevention mechanism by @rakshasa
  • Use epoll event_fd and kevent EVFILT_USER to interrupt polling by @rakshasa
  • Added --without-ncurses option for daemon-only builds by @trim21

Bug Fixes

  • Throw if piece messages are too short by @anthonyryan1
  • Added pkgconfig libcurl to Requires.private for static linking by @trim21
  • Added intermediate requesting flag for trackers to prevent premature deletion by @rakshasa
  • Fixed missing UdpRouter disconnect handling for failed hostname lookups by @rakshasa
  • Fixed various tracker exceptions by @rakshasa
  • Fixed potential DHT peer list leak by parsing the buffer before adding it to callback by @rakshasa
  • Fix use-after-free in dht_compare_closer by @jmakovicka
  • Set explicit 8 MB thread stack size when building with musl libc by @Trogious
  • Fix RPC/SCGI security and crash bugs by @sirus20x6
  • Close SCGI task on EPIPE to stop event_write() busy-loop by @xirvik
  • Updated LUA autoconf script by @rakshasa
  • Fixed cacheline size check by @rakshasa

Don't miss a new rtorrent release

NewReleases is sending notifications on new releases.