Summary
While this release contains a lot of bug fixes, it's should still be considered unstable due to extensive changes to multi-threaded tracker handling.
Trackers now handle requests in the tracker thread and UDP requests use just two open sockets for IPv4/6.
Since all long-time UDP tracker issues have been resolved, trackers.use_udp has been deprecated. If you need to disable UDP trackers, or HTTP trackers, use download insert events.
SCGI replies larger than 1000 bytes are now compressed by default.
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
- Enable SCGI compression by default and set min size to 1000 bytes by @rakshasa
- Allow for quick shutdown after sending the first UDP announce packet by @rakshasa
- Use a single UDP socket for all UDP tracker requests by @rakshasa
- Deprecate trackers.use_udp as it is no longer needed by @rakshasa
- Tracker HTTP/UDP now does requests for both IPv4 and IPv6 when announcing by @rakshasa
- Tracker HTTP/UDP requests are now done in the tracker thread by @rakshasa
Bug Fixes
- Removing downloads now leaves tracker objects alive until they're done by @rakshasa
- Reset SCgiTask m_trusted on connection reuse by @xirvik
- Move d.save_full_session to run after user-registered inserted_new handlers by @xirvik
- SCGI event_read return on partial header read instead of closing connection by @trim21
- SCGI defer content-type body peek until body received by @trim21
- Update json and tinyxml2 to latest stable versions from upstream by @mirolm
- Fix timeout queue entry check by @jmakovicka
- Fix typo causing internal error on exit with ipv6 by @jmakovicka
- Avoid scheduling task timeout twice by @jmakovicka
- CurlStack guard the vector during iteration and removal by @jmakovicka
- Unlock when calling the callback to prevent lock inversion by @jmakovicka