Skip to content

Releases: alanmcgovern/monotorrent

v2.0.7

23 Dec 17:27
Compare
Choose a tag to compare

What's Changed

  • [core] Skip parsing key if value is an empty string by @winterqt in #584

New Contributors

Full Changelog: release-v2.0.6...release-v2.0.7

v3.0.0-beta-0106

23 Dec 17:20
55770f9
Compare
Choose a tag to compare
v3.0.0-beta-0106 Pre-release
Pre-release

What's Changed

  • [core] Skip parsing key if value is an empty string by @winterqt in #584

New Contributors

Full Changelog: release-v3.0.0-beta-0104...release-v3.0.0-beta-0106

v3.0.0-beta-0104

15 Dec 19:06
d321ab7
Compare
Choose a tag to compare
v3.0.0-beta-0104 Pre-release
Pre-release

What's Changed

Full Changelog: release-v3.0.0-beta-0102...release-v3.0.0-beta-0104

v3.0.0-beta-0102

06 Dec 16:42
85888fa
Compare
Choose a tag to compare
v3.0.0-beta-0102 Pre-release
Pre-release

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

12 Nov 15:57
7233923
Compare
Choose a tag to compare
v3.0.0-beta-0068 Pre-release
Pre-release

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

06 Nov 23:38
420cb93
Compare
Choose a tag to compare
v3.0.0-beta-0064 Pre-release
Pre-release

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 custom IRequester 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

02 Nov 23:41
169865c
Compare
Choose a tag to compare
v3.0.0-beta-0050 Pre-release
Pre-release

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

18 Oct 05:26
Compare
Choose a tag to compare
Pre-release

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 use PieceSegment rather than BlockInfo. 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

07 Aug 16:15
Compare
Choose a tag to compare
v3.0.0-beta-0010 Pre-release
Pre-release

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

19 Jul 22:42
Compare
Choose a tag to compare

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