github ikatson/rqbit v9.1.0

3 hours ago

rqbit 9.1.0 is mostly a stability and correctness release, with a few small features. Several fixes stop a remote peer from crashing rqbit: deeply nested bencode, an out-of-range ut_metadata request, and a panic in the incoming-connection listener. It also adds socks5h:// proxies, fixes BEP 52 hybrid torrents that couldn't be added, and fixes a web UI bug that cut output folder names at #.

Library users: PeerConnectionOptions has a new max_request_window field. If you build that struct with every field listed instead of using ..Default::default(), add the new field.

Features

  • Support socks5h:// proxy URLs by @jpds in #683
  • Make the per-peer request window configurable by @melkir in #687
  • Stats: count connected peers that have the full torrent by @zond in #649

Crash and security fixes

  • bencode: limit deserializer recursion depth (remote stack-overflow abort) by @tweedge in #660
  • Fix off-by-one in ut_metadata bounds check (remote panic) by @MarcelCoding in #704
  • Don't panic in listener accept by @ikatson in #674

Fixes

  • Torrents: don't reject duplicate .pad/<length> filenames, so BEP 52 hybrid torrents can be added, by @tweedge in #701
  • Web UI: output folder no longer truncated at # when adding torrents, by @qnfm in #710
  • Docker: make the CA cert bundle world-readable, so the image runs as a non-root user, by @Allypost in #712
  • Route blocklist/allowlist downloads through the proxied client by @jpds in #669
  • Peers: detect capabilities from the handshake on incoming connections by @zond in #651
  • Peers: accept an extended handshake missing the m dictionary by @jpds in #684
  • Peers: read the handshake until it is complete by @ArshPunisher in #699
  • DHT: fix duplicate request_one call by @moshen in #646
  • DHT: keep the worker alive after a per-datagram recv error on Windows by @nickEatsBread in #690
  • LSD: cancel the announce task once the torrent is removed by @lvella in #700
  • Storage: write past 2 GiB where pwritev takes a 32-bit off_t by @zond in #661
  • Windows: mark files sparse regardless of the log level by @tvollstaedt in #681
  • Release the state lock before update_only_files touches the peer table by @zond in #659
  • Take a piece out of the download queue once we have it by @zond in #655
  • Only treat 40-character hex strings as info hashes by @melkir in #688
  • Streaming: wait for the initial check in ManagedTorrent::stream by @melkir in #689
  • Storage API: don't lose is_type_id through boxing and wrapping (#652), forward pwrite_all_vectored through Box (#654), and forward on_piece_completed through the storage middlewares (#653), all by @zond
  • Core: CurrentPiece::piece_offset is now the offset within the piece by @MemoDo-En in #695
  • Build: use .PHONY instead of @PHONY in Makefiles by @TUKAIL in #676
  • Dependencies updated (#716)

New Contributors

@moshen, @zond, @tweedge, @jpds, @TUKAIL, @tvollstaedt, @melkir, @nickEatsBread, @ArshPunisher, @MarcelCoding, @Allypost, @qnfm, @lvella and @MemoDo-En made their first contributions. Thank you!

Full Changelog: v9.0.1...v9.1.0

Don't miss a new rqbit release

NewReleases is sending notifications on new releases.