Releases: alanmcgovern/monotorrent
v3.0.0-beta-0264
What's Changed
- Work around a HttpListener framework bug affecting test reliability by @alanmcgovern in #659
- Add code coverage tooling by @alanmcgovern in #660
- MetadataMode - improved support for BitTorrent v2 torrents as defined by BEP52 by @alanmcgovern in #663
Full Changelog: release-v3.0.0-beta-0240...release-v3.0.0-beta-0264
release-v3.0.0-beta-0240
What's Changed
- [core] Add logging when handling requests in the Tracker server by @alanmcgovern in #620
- [core] Try harder to send a valid port to the tracker by @alanmcgovern in #624
- [core] Remove the restriction on 'MoveFileAsync' by @alanmcgovern in #625
- [server] Properly handle invalid port values by @alanmcgovern in #623
- [core] Don't require peer_ids to match expectations by @alanmcgovern in #628
- [PieceWriter] Fix a threading bug and clean up stale state by @alanmcgovern in #629
- Fixing "Contribute" links. by @MarioFinale in #641
- The ReusableTask dependency has been updated to incorporate recent performance optimisations
- Several performance improvements made to BitField. Additional optimisations were made for .NET7 and newer by using more modern APIs.
- Improved DiskManager behaviour by ensuring expensive operations (opening or truncating files) are consistently executed asynchronously by a threadpool thread.
- Sparse files are now created using the built-in API, when it's available.
- Optimised the RC4 encryption routines by migrating to Span based APIs.
- Further improvements to BitTorrent v2 support - fixing several more corner cases exposed when trying to download a torrent consisting of ~100GB of data, but which used a piece length of 16kB.
- Relaxed the restriction on he upper size for a message received from another peer. The limit is now 64kB or the size of the BitField needed to represent all pieces in the torrent. If you have 1,000,000 pieces in your torrent, you'll have a bitfield which is substantially larger than 64kB.
New Contributors
- @MarioFinale made their first contribution in #641
Full Changelog: release-v3.0.0-beta-0159...release-v3.0.0-beta-0240
v3.0.0-beta-0159
General
Just adding a little more logging to help diagnose issues in future. Functionally identical to release 3.0.0-beta-0157 when logging is not enabled.
Full Changelog: release-v3.0.0-beta-0157...release-v3.0.0-beta-0159
v3.0.0-beta-0157
General
This release has several improvements to how IPv6 support is implemented, adding support for IPv6 Tracker Extension and including support for the latest refresh of both BEP 11 and BEP 15.
Additionally, it is now possible to call TorrentManager.MoveFileAsync
while a torrent is actively downloading, and support for dynamically moving files is compatible with EngineSettings.UsePartialFiles
. There are also several tweaks to BEP52/BEP47 support, improving support for hybrid torrents which contain multiple sequential empty files.
What's Changed
- [core] Fix creating ipv6 uris by @alanmcgovern in #589
- [IPV6] Support setting multiple listeners and reported endpoints by @alanmcgovern in #590
- [core] Support ipv4 and ipv6 compact addresses by @alanmcgovern in #592
- [core] Add full ipv6 support for PeerExchange by @alanmcgovern in #593
- [ipv6] Add ipv6 udp tracker support by @alanmcgovern in #594
- [PieceWriter] Add a test covering 'unlimited' open files by @alanmcgovern in #596
- [core] Refresh the 'AmInterested' status regularly by @alanmcgovern in #601
- [core] Allow moving files at any point by @alanmcgovern in #604
- [core] Fix several bugs with 'EngineSettings.UsePartialFiles' by @alanmcgovern in #608
- [core] Fix a BEP52 related regression by @alanmcgovern in #611
- [bep52|bep47] Fix file ordering sanity check and padding for empty files by @alanmcgovern in #612
- Integration tests ipv6 by @alanmcgovern in #614
- [core] Ratelimiters should allow requests larger than chunk size by @alanmcgovern in #617
- [ipv6] Use the correct prefix for IPv6 non-compact peers by @alanmcgovern in #616
- [core] Tweak ratelimiting a little better for low rates by @alanmcgovern in #618
Full Changelog: release-v3.0.0-beta-0106...release-v3.0.0-beta-0157
v2.0.7
v3.0.0-beta-0106
v3.0.0-beta-0104
What's Changed
- [core] Properly specify the System.Memory reference by @alanmcgovern in #582
Full Changelog: release-v3.0.0-beta-0102...release-v3.0.0-beta-0104
v3.0.0-beta-0102
General
- Several fixes to how webseeds are implemented/integrated, thanks to @borigas .
- If a regular block of data is requested from a peer and they do not fulfil that request, a timeout is applied and the connection is closed. The same timeout is now applied when requesting metadata and bittorrent v2 piece hashes from peers. This fixes a bug whereby a peer who does not fulfil the request would result in the engine stalling instead of re-fetching the metadata/v2 piece hash from another peer.
What's Changed
- [tests] Stop the HttpListener as part of teardown by @alanmcgovern in #574
- Simplify how modes are implemented in the engine by @alanmcgovern in #575
- Ensure the engine re-announces on a regular cadence when in Metadata mode (i.e. downloading with a magnet link) and PieceHashes mode (when fetching bittorrent v2 piece hashes from other peers).
- Start web seed if the speed trigger is 0 by @borigas in #577
- Web Seed Integration Tests by @borigas in #576. This also includes fixes for several issues with support for bittorrent v2 and padding files (BEP52 and BEP47).
- [tests] Close the response after writing the status code by @alanmcgovern in #578
- Specify 'Release' configurations properly by @alanmcgovern in #579
Full Changelog: release-v3.0.0-beta-0068...release-v3.0.0-beta-0102
v3.0.0-beta-0068
What's Changed
- [core] Refactor how announce requests are handled. by @alanmcgovern in #572 . Torrents which have 10, or more, tiers of trackers will have significantly reduced memory consumption in the event trackers within those tiers are non-responsive or offline.
Full Changelog: release-v3.0.0-beta-0064...release-v3.0.0-beta-0068
v3.0.0-beta-0064
What's Changed
- Removed
PieceRequesterSettings.IgnoreChokeState
. This was an experiment used to port 'Metadata' mode and 'PieceHashes' mode to use the same piece picking logic as when actual torrent data is downloaded. This was a success and this behaviour was implemented using a customIRequester
instead, eliminating the need for this hacky behaviour. - Fixed a bug where 'endgame' mode wasn't enabled when fetching metadata from other peers, resulting in slower performance when fetching the torrent metadata for a magnet link.
- Fixed a bug where outstanding requests for 'metadata' or bittorrent v2 'piece hahes' were not always cancelled when a peer disconnected.
- Integration tests by @borigas in #567
- Handle timeouts requesting metadata by @alanmcgovern in #568
Full Changelog: release-v3.0.0-beta-0050...release-v3.0.0-beta-0064