Releases: alanmcgovern/monotorrent
Releases · alanmcgovern/monotorrent
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
v3.0.0-beta-0050
What's Changed
- Optimised PeerInfo.CompactPeer so it have a zero-allocation codepath when converting a peer to the 6 byte compact representation for .NET 4.7.2 and newer.
- When allocating reusable byte buffers under .NET 5.0 or newer, the
GC.AllocateUninitializedArray
capability is used to allocate pinned arrays in the pinned object heap. This reduces GC fragmentation. - Fixed a long standing issues where a peer which has disconnected was unintentionally retained for a short term by the code which manages choking/unchoking peers when all upload slots are in-use. If that peer is unchoked during that time period, an error would be raised.
- The 'meta version' attribute used to identify bittorrent v2 torrents was not written to the
info
dictionary as per spec, now it is. - [bep52] Fix creating v2 torrents with zero length files by @alanmcgovern in #562
- More fixes for empty files by @alanmcgovern in #565
Several contributions from @borigas, including identifying all of the issues caused by zero length files.
Full Changelog: release-v3.0.0-beta-0034...release-v3.0.0-beta-0050
release-v3.0.0-beta-0034
What's Changed
- Set up CI with Azure Pipelines yaml by @alanmcgovern in #552
- Tidy up DiskWriter by @alanmcgovern in #557
- Small perf and memory optimisations by @alanmcgovern in #558
- Added more tweaks to TorrentCreator to improve how events are emitted after the recent refactorings.
- Misc API changes to migrate some classes to structs, and some structs to readonly structs.
- Migrated
PiecePicker
to exclusively usePieceSegment
rather thanBlockInfo
. Selecting pieces just needs the piece index and block index. It does not need the block length, which is what BlockInfo provides. BitTorrent V2 makes block length a much more complex thing to define. - Updated how the built-in disk writer handles concurrency when writing to the same file. When targeting .NET 6.0 and above the new, higher performance, RandomAccess API is used to read/write data. For .NET versions older than 6.0 multiple concurrent
FileStreams
are opened to allow safe concurrent reads/writes. - AllowedFast messages are now combined into an AllowedFastBundle to save a small amount of memory
- Messages used to be decoded using a Dictionary lookup. This was converted to a simple array lookup, which makes it a much cheaper operation for one of the most commonly called codepaths in the library.
Full Changelog: release-v3.0.0-beta-0010...release-v3.0.0-beta-0034
v3.0.0-beta-0010
What's Changed
- [core] Make the Http streaming uri configurable by @alanmcgovern in #549
- [core] Fixed several minor issues handling cancellation, or request rejection when two or more peers download the same piece.
Full Changelog: release-v3.0.0-beta-0000...release-v3.0.0-beta-0010
v2.0.6
General
- MonoTorrent can now be configured to use any IP/hostname or port when setting up the HttpListener to serve data for a streaming torrent. The default is 127.0.0.1:5555, but it can be configured to any public ip/hostname if needed.
- Backported a change to increase internal timeouts which will allow monotorrent to utilize webseeds.
Full Changelog: release-v2.0.5...release-v2.0.6