Releases: alanmcgovern/monotorrent
v3.0.3-beta-0049
What's Changed
- Treat peers as 'connecting' until the handshake completes by @alanmcgovern in #689
- Restructure how peer connection retries are executed by @alanmcgovern in #690
- Check and ban peer when accepting incoming connection by @kaedei in #692
- Handle PeerExchangeManager on the right thread by @alanmcgovern in #696
- Better handling of incoming and outgoing connections by @alanmcgovern in #697
New Contributors
Full Changelog: release-v3.0.3-beta-0024...release-v3.0.3-beta-0049
v3.0.3-beta-0024
What's Changed
- Expose IPeerConnectionListeners publicly by @alanmcgovern in #679
- Add tests for hash sharing by @alanmcgovern in #678
- Fix issues saving/loading fastresume for hybrid torrents by @alanmcgovern in #681
- Add logging for incoming connections by @alanmcgovern in #683
- Remove the internal feature flags to disable BitTorrent V2 support by @alanmcgovern in #682
- Improve the test which validates empty files in hybrid torrents (issue #685) by @alanmcgovern in #686
- Improve compatibility BEP47 torrents by @alanmcgovern in #688
Full Changelog: release-v3.0.3-beta-0003...release-v3.0.3-beta-0024
v3.0.3-beta-0003
General
- Fetching hash layers for BitTorrent V2 torrents should complete more reliably after two causes of slowdowns were resolved.
- For hybrid V1/V2 torrents, the engine now creates BitTorrent V1 connections by default and upgrades either incoming or outgoing requests if the handshake indicates support for BitTorrent V2.
- There's a new parameter in
EngineSettings
which controls how to create new files (preallocate them, or use sparse files). - If a torrent is hash checked, the engine will never create any missing zero length files, nor will it truncate any files which are too long. These actions will now be created when
TorrentManager.StartAsync
is invoked, which is a clear signal that write operations are intended to be executed. In addition, capability works in tandem with selectively marking files withPriority.DoNotDownload
. Where possible, the engine will not create files on disk when they are marked 'DoNotDownload'. This works best with BitTorrent V2, or files created using BEP47 padding files.
What's Changed
- Ensure pending messages are processed from the send queue regularly by @alanmcgovern in #673
- [dht] Allow bootstrapping from additional bootstrap routers by @alanmcgovern in #670
- Disambiguate between v1 and v2 connections more clearly by @alanmcgovern in #675
- Ensure hash checking a file is a purely read-only operation by @alanmcgovern in #674
Full Changelog: release-v3.0.2...release-v3.0.3-beta-0003
v3.0.2
General
Improved adherence to BEP19s (Web Seeding) approach to 'rarest first but largest gap'. A bug in the previous implementation meant that under certain circumstances the piece selection would be non-sequential. Now piece selection is guaranteed to be sequential and will always attempt to select at least 2MB of data, or one full piece, per HTTP request.
What's Changed
- Fix two issues affecting webseeds by @alanmcgovern in #665
- Add validation http requests by @borigas and @alanmcgovern in #668
Full Changelog: release-v3.0.1...release-v3.0.2
release-v3.0.1
What's Changed
- Ensure ReusableTasks is a nuget dependency by @alanmcgovern in #667
Full Changelog: release-v3.0.0...release-v3.0.1
v3.0.0
Summary
Support for BitTorrent V2 (BEP 52) has been completed. Hybrid torrents, as well as V2 only torrents, are fully supported. This includes support for V2 MagnetLinks, as well as fetching the merkle layers from other peers if they are not included in the torrent metadata.
The library itself has evolved substantially, taking advantage of many of the improvements to the .NET framework since .NET 5.0 was released. While you should see a reduction in memory and CPU usage under every .NET framework version, the largest gains will be seen under .NET 5.0 or newer.
Far too many things have changed to even begin listing them. Suffice to say, it's a lot.
What's Changed
New Contributors
Full Changelog: release-v3.0.0-beta-0264...release-v3.0.0
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