subrepo: subdir: "apps/aquatic" merged: "34b45e92" upstream: origin: "https://github.com/greatest-ape/aquatic" branch: "master" commit: "34b45e92" git-subrepo: version: "0.4.9" origin: "???" commit: "???"
207 lines
5.9 KiB
Markdown
207 lines
5.9 KiB
Markdown
# Changelog
|
|
|
|
## Unreleased
|
|
|
|
### aquatic_udp
|
|
|
|
#### Changed
|
|
|
|
* (Breaking) Open one socket each for IPv4 and IPv6. The config file now has
|
|
one setting for each.
|
|
|
|
### aquatic_http
|
|
|
|
#### Changed
|
|
|
|
* (Breaking) Open one socket each for IPv4 and IPv6. The config file now has
|
|
one setting for each.
|
|
|
|
## 0.9.0 - 2024-04-03
|
|
|
|
### General
|
|
|
|
#### Added
|
|
|
|
* Add `aquatic_peer_id` crate with peer client information logic
|
|
* Add `aquatic_bencher` crate for automated benchmarking of aquatic and other
|
|
BitTorrent trackers
|
|
|
|
### aquatic_udp
|
|
|
|
#### Added
|
|
|
|
* Add support for reporting peer client information
|
|
|
|
#### Changed
|
|
|
|
* Switch from socket worker/swarm worker division to a single type of worker,
|
|
for performance reasons. Several config file keys were removed since they
|
|
are no longer needed.
|
|
* Index peers by packet source IP and provided port, instead of by peer_id.
|
|
This prevents users from impersonating others and is likely also slightly
|
|
faster for IPv4 peers.
|
|
* Avoid a heap allocation for torrents with two or less peers. This can save
|
|
a lot of memory if many torrents are tracked
|
|
* Improve announce performance by avoiding having to filter response peers
|
|
* In announce response statistics, don't include announcing peer
|
|
* Harden ConnectionValidator to make IP spoofing even more costly
|
|
* Remove config key `network.poll_event_capacity` (always use 1)
|
|
* Speed up parsing and serialization of requests and responses by using
|
|
[zerocopy](https://crates.io/crates/zerocopy)
|
|
* Report socket worker related prometheus stats per worker
|
|
* Remove CPU pinning support
|
|
|
|
#### Fixed
|
|
|
|
* Quit whole application if any worker thread quits
|
|
* Disallow announce requests with port value of 0
|
|
* Fix io_uring UB issues
|
|
|
|
### aquatic_http
|
|
|
|
#### Added
|
|
|
|
* Reload TLS certificate (and key) on SIGUSR1
|
|
* Support running without TLS
|
|
* Support running behind reverse proxy
|
|
|
|
#### Changed
|
|
|
|
* Index peers by packet source IP and provided port instead of by source ip
|
|
and peer id. This is likely slightly faster.
|
|
* Avoid a heap allocation for torrents with four or less peers. This can save
|
|
a lot of memory if many torrents are tracked
|
|
* Improve announce performance by avoiding having to filter response peers
|
|
* In announce response statistics, don't include announcing peer
|
|
* Remove CPU pinning support
|
|
|
|
#### Fixed
|
|
|
|
* Fix bug where clean up after closing connections wasn't always done
|
|
* Quit whole application if any worker thread quits
|
|
* Fix panic when sending failure response when running with metrics behind
|
|
reverse proxy
|
|
* Don't always close connections after sending failure response
|
|
|
|
### aquatic_ws
|
|
|
|
#### Added
|
|
|
|
* Add support for reporting peer client information
|
|
* Reload TLS certificate (and key) on SIGUSR1
|
|
* Keep track of which offers peers have sent and only allow matching answers
|
|
|
|
#### Changed
|
|
|
|
* A response is no longer generated when peers announce with AnnounceEvent::Stopped
|
|
* Compiling with SIMD extensions enabled is no longer required, due to the
|
|
addition of runtime detection to simd-json
|
|
* Only consider announce and scrape responses as signs of connection still
|
|
being alive. Previously, all messages sent to peer were considered.
|
|
* Decrease default max_peer_age and max_connection_idle config values
|
|
* Remove CPU pinning support
|
|
|
|
#### Fixed
|
|
|
|
* Fix memory leak
|
|
* Fix bug where clean up after closing connections wasn't always done
|
|
* Fix double counting of error responses
|
|
* Actually close connections that are too slow to send responses to
|
|
* If peers announce with AnnounceEvent::Stopped, allow them to later announce on
|
|
same torrent with different peer_id
|
|
* Quit whole application if any worker thread quits
|
|
|
|
## 0.8.0 - 2023-03-17
|
|
|
|
### General
|
|
|
|
#### Added
|
|
|
|
* Support exposing a Prometheus endpoint for metrics
|
|
* Add cli flag for printing parsed config
|
|
* Add `aquatic_http_private`, an experiment for integrating with private trackers
|
|
|
|
#### Changed
|
|
|
|
* Rename request workers to swarm workers
|
|
* Switch to thin LTO for faster compile times
|
|
* Use proper workspace path declarations instead of workspace patch section
|
|
* Use [Rust 1.64 workspace inheritance](https://blog.rust-lang.org/2022/09/22/Rust-1.64.0.html)
|
|
* Reduce space taken by ValidUntil struct from 128 to 32 bits, reducing memory
|
|
consumption for each stored peer by same amount
|
|
* Use regular indexmap instead of amortized-indexmap. This goes for torrent,
|
|
peer and pending scrape response maps
|
|
* Improve privilege dropping
|
|
* Quit whole program if any thread panics
|
|
* Update dependencies
|
|
|
|
#### Fixed
|
|
|
|
* Forbid unrecognized keys when parsing config files
|
|
* Stop including invalid avx512 key in `./scripts/env-native-cpu-without-avx-512`
|
|
|
|
### aquatic_udp
|
|
|
|
#### Added
|
|
|
|
* Add experimental io_uring backend with higher throughput
|
|
* Add optional response resend buffer for use on on operating systems that
|
|
don't buffer outgoing UDP traffic
|
|
* Add optional extended statistics (peers per torrent histogram)
|
|
* Add Dockerfile to make it easier to get started
|
|
|
|
#### Changed
|
|
|
|
* Replace ConnectionMap with BLAKE3-based connection validator, greatly
|
|
decreasing memory consumtion
|
|
* Don't return any response peers if announce event is stopped
|
|
* Ignore requests with source port value of zero
|
|
|
|
#### Fixed
|
|
|
|
* When calculating bandwidth statistics, include size of protocol headers
|
|
|
|
### aquatic_http
|
|
|
|
#### Changed
|
|
|
|
* Don't return any response peers if announce event is stopped
|
|
|
|
### aquatic_http_protocol
|
|
|
|
#### Fixed
|
|
|
|
* Explicity check for /scrape path
|
|
* Return NeedMoreData until headers are fully parsed
|
|
* Fix issues with ScrapeRequest::write and AnnounceRequest::write
|
|
* Expose write and parse methods for subtypes
|
|
|
|
### aquatic_http_load_test
|
|
|
|
#### Changed
|
|
|
|
* Exclusively use TLS 1.3
|
|
|
|
### aquatic_ws
|
|
|
|
#### Added
|
|
|
|
* Add HTTP health check route when running without TLS
|
|
|
|
#### Changed
|
|
|
|
* Make TLS optional
|
|
* Support reverse proxies
|
|
* Reduce size of various structs
|
|
|
|
#### Fixed
|
|
|
|
* Remove peer from swarms immediately when connection is closed
|
|
* Allow peers to use multiple peer IDs, as long as they only use one per info hash
|
|
|
|
### aquatic_ws_load_test
|
|
|
|
#### Changed
|
|
|
|
* Exclusively use TLS 1.3
|