diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..1beba05 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,38 @@ +# Changelog + +## Unreleased + +### Added + +* Add cli flag for printing parsed config +* Add `aquatic_http_private`, an experiment for integrating with private trackers +* _aquatic_udp_: implement optional response resend buffer +* _aquatic_udp_: add optional extended statistics +* _aquatic_udp_: add Dockerfile to make it easier to get started +* _aquatic_ws_: add HTTP health check route when running without TLS + +### Changed + +* Rename request workers to swarm workers +* Switch to thin LTO +* Use proper workspace path declarations and remove workspace patch section +* Reduce space taken by ValidUntil struct from 128 to 32 bits +* Use regular (non-amortized) IndexMap for peer and pending scrape response maps (but not for torrent maps) +* Improve privilege dropping +* Quit whole program if any thread panics +* Update dependencies +* _aquatic_udp_: replace ConnectionMap with BLAKE3-based connection validator +* _aquatic_udp_: ignore requests with source port value of zero +* _aquatic_ws_: reduce size of various structs +* _aquatic_ws_: make TLS optional +* _aquatic_ws_: support reverse proxies + +### Fixed + +* Fail on unrecognized config keys +* _aquatic_http_protocol_: explicity check for /scrape path +* _aquatic_http_protocol_: return NeedMoreData until headers are fully parsed +* _aquatic_http_protocol_: fix issues with ScrapeRequest::write and AnnounceRequest::write +* _aquatic_http_protocol_: expose write and parse methods for subtypes +* _aquatic_http_load_test_: exclusively use TLS 1.3 +* _aquatic_ws_: remove peer from swarms immediately when connection is closed diff --git a/Cargo.lock b/Cargo.lock index 3160909..c060ac3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -924,9 +924,9 @@ checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f" [[package]] name = "dotenvy" -version = "0.15.3" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3db6fcad7c1fc4abdd99bf5276a4db30d6a819127903a709ed41e5ff016e84" +checksum = "ed9155c8f4dc55c7470ae9da3f63c6785245093b3f6aeb0f5bf2e968efbba314" dependencies = [ "dirs", ] @@ -1340,9 +1340,9 @@ dependencies = [ [[package]] name = "hdrhistogram" -version = "7.5.1" +version = "7.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea9fe3952d32674a14e0975009a3547af9ea364995b5ec1add2e23c2ae523ab" +checksum = "7f19b9f54f7c7f55e31401bb647626ce0cf0f67b0004982ce815b3ee72a02aa8" dependencies = [ "base64", "byteorder", @@ -1542,9 +1542,9 @@ dependencies = [ [[package]] name = "itertools" -version = "0.10.4" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8bf247779e67a9082a4790b45e71ac7cfd1321331a5c856a74a9faebdab78d0" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" dependencies = [ "either", ] @@ -1591,9 +1591,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.132" +version = "0.2.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8371e4e5341c3a96db127eb2465ac681ced4c433e01dd0e938adbef26ba93ba5" +checksum = "c0f80d65747a3e43d1596c7c5492d95d5edddaabd45a7fcdb02b95f644164966" [[package]] name = "libm" @@ -1612,9 +1612,9 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f80bf5aacaf25cbfc8210d1cfb718f2bf3b11c4c54e5afe36c236853a8ec390" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" dependencies = [ "autocfg", "scopeguard", @@ -2713,9 +2713,9 @@ checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" [[package]] name = "syn" -version = "1.0.99" +version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13" +checksum = "52205623b1b0f064a4e71182c3b18ae902267282930c6d5462c91b859668426e" dependencies = [ "proc-macro2", "quote", @@ -2867,9 +2867,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df54d54117d6fdc4e4fea40fe1e4e566b3505700e148a6827e59b34b0d2600d9" +checksum = "f6edf2d6bc038a43d31353570e27270603f4648d18f5ed10c0e179abe43255af" dependencies = [ "futures-core", "pin-project-lite", diff --git a/TODO.md b/TODO.md index 7cb920b..7ed79f2 100644 --- a/TODO.md +++ b/TODO.md @@ -2,11 +2,13 @@ ## High priority +* Only return peers when AnnounceEvent != Stopped +* Do new udp load test round +* Release new version + ## Medium priority * Consider replacing unmaintained indexmap-amortized with plain indexmap -* udp: use regular indexmap for peers and possibly inline variant with few peers - * Run cargo-fuzz on protocol crates * quit whole program if any thread panics