Ecosyste.ms: OpenCollective

An open API service for software projects hosted on Open Collective.

github.com/alanmcgovern/monotorrent

The official repository for MonoTorrent, a bittorrent library for .NET
https://github.com/alanmcgovern/monotorrent

[core] Expose the IPEndPoint for IPeerConnection

For ipv4 and ipv6 connections we'll need access to this so we
can add the peer to the appropriat...

18fa8189430e44b101148b0a3c64caaacab5929c authored almost 2 years ago by Alan McGovern <[email protected]>
[tests] Fix a threading issues in these tests

They rely on the SyncronizationContext being set.

0f7cdaf41da474305795697be8885eb9ce3c9d65 authored almost 2 years ago by Alan McGovern <[email protected]>
[build] Install required runtimes for tests

Always install 3.1.x, 5.x and 6.x when running tests
as we can't rely on azure devops having any...

c349d6267a8331a9253bc88158197b3c7cc47cd0 authored almost 2 years ago by Alan McGovern <[email protected]>
[dht] Don't insert a synthetic 'local' node into the table

We just care about the id associated with the DhtEngine, we
don't actually need (or want) it to ...

e8b465e62b3eebe9818ad59bce8ffa1c9f58fcfd authored almost 2 years ago by Alan McGovern <[email protected]>
Merge pull request #629 from alanmcgovern/cleanup-some-more-filestream-stuff

[PieceWriter] Fix a threading bug and clean up stale state

7931689dd88600cff7b276ae26a7be7ac250b9ed authored almost 2 years ago by Alan McGovern <[email protected]>
[PieceWriter] Clear up state after closing the last stream

DiskWriter has a dictionary mapping ITorrentFile -> list of open
streams. When the final stream ...

60a94b231c0a647bec94620f2d3dc41e30d7067d authored almost 2 years ago by Alan McGovern <[email protected]>
[PieceWriter] Fix a threading issue with the padding support

Whoops - there was a 'ConfigureAwait(false)' here which caused
improper threaded access to the u...

de49788f9233209473ae0bec38465f006c7d53ce authored almost 2 years ago by Alan McGovern <[email protected]>
[core] Don't sync to the main thread to dispose a stream

This can be safely disposed on a background thread as the
underlying stream cannot be in use any...

b48ef48e47dfa909a7c19c3d404fbd2b9397fa95 authored almost 2 years ago by Alan McGovern <[email protected]>
[core] Don't require peer_ids to match expectations (#628)

If a connection has already been made to a particular ip/port and
the peer_id is known, or if a...

86fa0a246860185087adfe74dcd140d13a7bbff6 authored almost 2 years ago by Alan McGovern <[email protected]>
[core] Remove the restriction on 'MoveFileAsync'

Now this can be invoked while the torrent is active.

096f1bddd8cbd2845c2ab24d337d9080ea4535f8 authored almost 2 years ago by Alan McGovern <[email protected]>
This line should never have been removed

Whoops? This removed the wrong if statement.

https://github.com/alanmcgovern/monotorrent/pull/6...

3159b447bc4abda111c7b80490fe583ea3099b04 authored almost 2 years ago by Alan McGovern <[email protected]>
[core] Try harder to send a valid port to the tracker

The main part of this change is that the actual IPEndPoint
which the listnener has been bound to...

da71b19888f5942613a465da039babddc3a4d342 authored almost 2 years ago by Alan McGovern <[email protected]>
[tests] Try to fix some random failures in CI

Sometimes the port isn't released fast enough and the next test
which tries to claim it ends up ...

58524624c945281f3ed02e370e599008d618b6c4 authored almost 2 years ago by Alan McGovern <[email protected]>
[core] Add logging when handling requests in the Tracker server

When hosting a tracker, an unexpected exception looks like it
could cause an empty response to b...

698296ae970b32d3378697477ec4c5c71133480c authored almost 2 years ago by alan.mcgovern <[email protected]>
[core] Add extra logging around incoming/outgoing connections

0c919b226e25e53eedc97adeefc93870c5367aa0 authored almost 2 years ago by alan.mcgovern <[email protected]>
BEP7 is supported now (#619)

2a2243c07209fa79a86d70a72c3d92f987465022 authored almost 2 years ago by Alan McGovern <[email protected]>
[core] Add improved logging for unexpected peer_ids

If a peer sends a HandshakeMessage with a 'peer_id' that *does not*
match the 'peer_id' it sent ...

735f412b1874c09d47fd5b834bc0f674cbf31a06 authored almost 2 years ago by alan.mcgovern <[email protected]>
[core] Tweak ratelimiting a little better for low rates (#618)

* [core] Tweak ratelimiting a little better for low rates

Fix another issue with a ratelimit ...

a8c7a6c20195b9a1f3c31d8aca32c152f385bcc7 authored almost 2 years ago by Alan McGovern <[email protected]>
Merge pull request #616 from alanmcgovern/fix-ipv6-non-compact-responses

[ipv6] Use the correct prefix for IPv6 non-compact peers

629ddcfb92a9c62ac12cc2ce9093f5a22f624537 authored almost 2 years ago by Alan McGovern <[email protected]>
[core] Ratelimiters should allow requests larger than chunk size (#617)

* [core] Ratelimiters should allow requests larger than chunk size

If the ratelimiter is set ...

0030a5b146f7e013e9d5cc2aca04696e29857189 authored almost 2 years ago by Alan McGovern <[email protected]>
[ipv6] Use the correct prefix for IPv6 non-compact peers

When decoding a tracker response which contains non-compact
data, ensure IPv6 peers are parsed w...

168c8ac43e555c7a9be028bda30513a628d96b87 authored almost 2 years ago by alan.mcgovern <[email protected]>
Merge pull request #614 from alanmcgovern/integration-tests-ipv6

Integration tests covering ipv6 support

774c636f0e29b966d2ba269b7ede7533feb89a33 authored almost 2 years ago by Alan McGovern <[email protected]>
flush

21b49379889f2058ecefa39cedaedc7521646649 authored almost 2 years ago by Alan McGovern <[email protected]>
whoops

4616dfb15decb144944f0e2e88d7ec69c1230eaa authored almost 2 years ago by Alan McGovern <[email protected]>
[core] Augment the integration tests to cover ipv6

d509dad1a8a57cc4aff5acf032f9088e7c225d9f authored almost 2 years ago by Alan McGovern <[email protected]>
add a code comment explaining what this is for

09130895e4e1966ddf4586da1e67a02e3a461913 authored almost 2 years ago by Alan McGovern <[email protected]>
[bep52|bep47] Fix file ordering sanity check and padding for empty files (#612)

When torrents contain multiple sequential empty files, ensure padding data is applied to the clo...

c5aa7be72a1c3d0540e661c42d3d133094eb6346 authored almost 2 years ago by Alan McGovern <[email protected]>
Merge pull request #611 from alanmcgovern/fix-bep52-file-creation-bug

[core] Fix a BEP52 related regression

80843064d4672c774fef887413d67e5c45734754 authored almost 2 years ago by Alan McGovern <[email protected]>
[core] Fix a BEP52 related regression

When sorting files for BEP52 compatibility, use an ordinal
comparison rather than the default cu...

9746cfb5e9b87d2ffd4e39457300dabe6a39da4c authored almost 2 years ago by Alan McGovern <[email protected]>
Merge pull request #608 from alanmcgovern/fix-use-partial-files

[core] Fix several bugs with 'EngineSettings.UsePartialFiles'

e0947a8396674150b4565348f338d61484d58866 authored almost 2 years ago by Alan McGovern <[email protected]>
Fix the old test

3daf4ef38672d52f4413392bf2114cc45954e0a7 authored almost 2 years ago by Alan McGovern <[email protected]>
[core] Fix several bugs with 'EngineSettings.UsePartialFiles'

This adds several additional tests covering aspects of how this
feature was intended to operate....

9f3dece0ab333d2f514bfb9e5663dcdd671f8ead authored almost 2 years ago by Alan McGovern <[email protected]>
[tests] Fix a shutdown exception on the threadpool

This is just for tests, so if an error occurs due to disposing
the http listener, just catch it ...

64283e474c5943615c100cebd6688159b4a9af75 authored almost 2 years ago by Alan McGovern <[email protected]>
[core] Simplify how excess streams are closed

I had many concerns about the prior approach to closing excess
streams due to how it used a whil...

b7f3bbadbca4aee9603ad51af08eb616debe9ff6 authored almost 2 years ago by Alan McGovern <[email protected]>
[core] Allow moving files at any point

The support to move files while the torrent is actively running was
added as part of https://git...

0828cc4b5bec3c404c8c04735fcb530b3ef0cbd1 authored almost 2 years ago by Alan McGovern <[email protected]>
[piecewriter] Create a 'ReusableSemaphore'

Convert 'ReusableExclusiveSemaphore' into 'ReusableSemaphore' and
then port DiskManager to use t...

83e9cbc9bacf900732c1279e758c52b46e39744f authored almost 2 years ago by Alan McGovern <[email protected]>
[ipv6] Fix a copy/paste causing incoming ipv4 to be marked as ipv6

This would've been a (mostly) cosmetic issue as the parsed IPAddress
object would have reported ...

3f92846099b18ef4db753fdb6f52a70d96f9737b authored almost 2 years ago by Alan McGovern <[email protected]>
Merge pull request #601 from alanmcgovern/fix-aminterested-status-refreshing

[core] Refresh the 'AmInterested' status regularly

99b5f9f24fdb7383c7da3c9d3ff7791dd21f8eef authored almost 2 years ago by Alan McGovern <[email protected]>
[core] Refresh the 'AmInterested' status regularly

There are several cases where the 'AmInterested' status can change
for a given peer, and it's no...

d044ee2fbeea4102c55e4434e9b54e3b53f2bde7 authored almost 2 years ago by Alan McGovern <[email protected]>
Merge pull request #596 from alanmcgovern/fix-opening-unlimited-files

[PieceWriter] Add a test covering 'unlimited' open files

35bc6035e2c640ec3a9a1843cd5ca170f666618b authored almost 2 years ago by Alan McGovern <[email protected]>
[PieceWriter] Add a test covering 'unlimited' open files

This regressed as the code which used to validate this
was refactored/rewritten when creating IB...

a2b3b8fe396bc0899d1903d10d7e1e671628402a authored almost 2 years ago by Alan McGovern <[email protected]>
Merge pull request #594 from alanmcgovern/add-ipv6-udp-support

[ipv6] Add ipv6 support for udp and http trackers

7e6fe58a47db17f8771976a6f7aefbf818c8d2b0 authored almost 2 years ago by Alan McGovern <[email protected]>
[core] Use SocketsHttpHandler everywhere

For older versions of the .NET framework, use the
'StandardSocketsHttpHandler' nuget as a poly-f...

d8bde5d1b6240f113471a77d4cc206ecd44fe5c0 authored almost 2 years ago by Alan McGovern <[email protected]>
[core] Use a per-tracker random key for announcing

Change the key generation logic a little and share it between
all tracker implementations.

In s...

62680d1812453948363f7053390a58d3f3bbe2e0 authored almost 2 years ago by Alan McGovern <[email protected]>
[core] Complete tests for ipv6 udp tracker support

44be0a1ff4338826fb3706fac7dd24ef86404707 authored almost 2 years ago by Alan McGovern <[email protected]>
[core] If a udp request is never fulfilled, treat it as a timeout

If we can't receive a UDP message propagate the failure as a
timeout, not as an invalid response.

74fd392df6b024d56f016caf8709073d728c6ea8 authored almost 2 years ago by Alan McGovern <[email protected]>
[core] Add ipv4/ipv6 support to the simple internal tracker

40a9f2485a2e31e649e0d156abfc2daa9f4c57b4 authored almost 2 years ago by Alan McGovern <[email protected]>
Simplify

f29847bf48a740a072fe2ab7932a09f706ec9f2b authored almost 2 years ago by Alan McGovern <[email protected]>
[core] Add ipv6 support for udp trackers

Each tracker can npw have one, or more, connections. When a tracker is
announced to, each connec...

550171884d0c4b57da91b99a302623d2a903e5de authored almost 2 years ago by Alan McGovern <[email protected]>
Merge pull request #593 from alanmcgovern/pex-ipv6

[core] Add full ipv6 support for PeerExchange

8fa95f675c030c287d389176321aad4632c57af2 authored almost 2 years ago by Alan McGovern <[email protected]>
[core] Add full ipv6 support for PeerExchange

ipv4 and ipv6 peers are captured in the peer exchange manager, with
the ipv4 and ipv6 fields pop...

339ff100a28a383580c249b75367cb92af282ceb authored almost 2 years ago by Alan McGovern <[email protected]>
Merge pull request #592 from alanmcgovern/compact-peer-ipv4-ipv6

[core] Support ipv4 and ipv6 compact addresses

8a40c2039b0bb9fc09a6e8127109b2a6976b3e3f authored almost 2 years ago by Alan McGovern <[email protected]>
[core] Allow parsing ipv4 and ipv6 addresses

4fe7fe30c9b91fb1c8c2a311630c3a07c7d2d135 authored almost 2 years ago by alan.mcgovern <[email protected]>
Merge pull request #590 from alanmcgovern/better-ipv6

[IPV6] Support setting multiple listeners and reported endpoints

fb05f30de238d0e71d1751ab5aa089e356afd3c9 authored almost 2 years ago by Alan McGovern <[email protected]>
Fix compilation

815a572e4f34d0b7c034249b1cb3f6994fd5000f authored almost 2 years ago by Alan McGovern <[email protected]>
[core] Better semantics around override/actual listen ports

If the user configures an override which uses port '0', then that
means the *real* listen port s...

b5e01e3fe9472973a5ec61afcf4b6b88715def17 authored almost 2 years ago by Alan McGovern <[email protected]>
[core] Simplify starting/stopping listeners

Whenever we start/stop a listener we also want to map/unmap it's
ports.

359118b297301bc462706418071591cc3a5a06c2 authored almost 2 years ago by Alan McGovern <[email protected]>
[tests] Add tests for ReportedListenEndPoints

Don't rely on dictionary ordering too :)

715343df26d6bddd31791fe78d8d4104d58d0a51 authored almost 2 years ago by Alan McGovern <[email protected]>
[core] Add the ability to specify multiple 'ReportedListenEndPoints'

The 'ListenEndpoints' is what we configure the engine to listen for
incoming connections on. The...

f4ce002ba01fe2577510b4e910af041203b61004 authored almost 2 years ago by Alan McGovern <[email protected]>
[core] Allow setting multiple listeners

It's normal enough to listen on an ipv4 endpoint and
also an ipv6 endpoint.

Extend the ability ...

ce830d1517fc2697da96bd1e8109a291fa452279 authored almost 2 years ago by Alan McGovern <[email protected]>
Flush changes

f98b28f87a7881f1850b2f46273092e4a1b051a4 authored almost 2 years ago by Alan McGovern <[email protected]>
Merge pull request #589 from alanmcgovern/fix-ipv6-uri-creation

[core] Fix creating ipv6 uris

32f412bb6627071de8ff01fcf07f77821dee2e24 authored almost 2 years ago by Alan McGovern <[email protected]>
[core] Close the connection too

5b83f92b2c7b4b99ce51fca064e87fe059a08c8f authored almost 2 years ago by Alan McGovern <[email protected]>
[core] Fix creating ipv6 uris

We need to wrap the address in square brackets here

402af1cf0e22a99092010bf7cf564d5d50afd59a authored almost 2 years ago by Alan McGovern <[email protected]>
Revert "[release] Well, maybe time to for 3.0.0 stable?"

This reverts commit 89d4d881a8999c0e5fd9ef805943f271212c1a54.
A few bug reports came in so i'll ...

09a6166606bafe34faf5752325af9afc4e18f578 authored almost 2 years ago by Alan McGovern <[email protected]>
[release] Well, maybe time to for 3.0.0 stable?

Sure why not!

I'll just update all the deps while i'm at it :)

89d4d881a8999c0e5fd9ef805943f271212c1a54 authored almost 2 years ago by Alan McGovern <[email protected]>
[bencoding] Remove some allocations when encoding BEncodedDictionary

The enumerator is a struct, but the API exposes it as an IEnumerator
which causes it to be boxed...

1e0eae895a912f8ad05061c75dec24ad3e7aca69 authored almost 2 years ago by Alan McGovern <[email protected]>
Merge pull request #584 from winterqt/skip-empty-strings

[core] Skip parsing key if value is an empty string

55770f9486adffd58b889c48f850fbccb2202b19 authored about 2 years ago by Alan McGovern <[email protected]>
[core] Skip parsing key if value is an empty string

f161ff8d6f16dd7435f99fa89aa0eee060c70bce authored about 2 years ago by Winter <[email protected]>
Merge pull request #582 from alanmcgovern/fix-system-memory-reference

[core] Properly specify the System.Memory reference

d321ab70a000e3c6ccad0b0c4bc8f0c4d6dfeed8 authored about 2 years ago by Alan McGovern <[email protected]>
[core] Properly specify the System.Memory reference

cb6d404a20b5912b89c9cd13fa669f3f6ce65f88 authored about 2 years ago by Alan McGovern <[email protected]>
Merge pull request #579 from alanmcgovern/fix-configurations

Specify 'Release' configurations properly

85888fa5c896655f42e32da21a074c2d4f303cd4 authored about 2 years ago by Alan McGovern <[email protected]>
Specify 'Release' configurations properly

Maybe this will work?

f59f0534c93005b1a523972d1d835f4c24bcae82 authored about 2 years ago by Alan McGovern <[email protected]>
Merge pull request #578 from alanmcgovern/fix-slow-test

[tests] Close the response after writing the status code

f65622d1feac78be90d5ee7af8db31e593290c29 authored about 2 years ago by Alan McGovern <[email protected]>
[tests] Close the response after writing the status code

If the response is not closed then the connection will be
treated as failed only after the 30 se...

34a4b6351a6279bd31321dcf510fab8869641394 authored about 2 years ago by Alan McGovern <[email protected]>
Merge pull request #576 from borigas/WebSeedIntegrationTest

Web Seed Integration Tests

003b30f4a23f5fec44b5a9d5a62af395a011e3d4 authored about 2 years ago by Alan McGovern <[email protected]>
Use 'count' not 'length' for the byte[] overrides

Whoops. The Span/Memory overrides should use the
Length of the Span/Memory, but the byte[] overr...

6deec7f04b0157f7e16e4eadc752aacfcc3ab518 authored about 2 years ago by alan.mcgovern <[email protected]>
[core] Fix an overread when streams have more data than asked for

The ZeroStream implementation always fills the passed-in buffer
with zeros, as any well behaving...

6d44891c14efc4fe4b21accd22422c41a81bf561 authored about 2 years ago by Alan McGovern <[email protected]>
Update some test time dependencies

Now net472 tests run properly in the latest VisaulStudio 2022
preview

9998ce87b908bc5dbb93c43b615e04616fea8d93 authored about 2 years ago by Alan McGovern <[email protected]>
Fix http seed retry test

0bd93fb9d0efbe0fee4c6c392566e63dd19e9f95 authored about 2 years ago by Ben Origas <[email protected]>
Fix crash in test cleanup

7de1f7d9025fea2d422bc0b623216a378e1ec16f authored about 2 years ago by Ben Origas <[email protected]>
Test showing failed http request doesn't retry

67ff4a11bed2d15d764ec022c901cad2495a56bb authored about 2 years ago by Ben Origas <[email protected]>
Test of files larger than 2^17

e21b3c7d8a2707af2c12a9414991f63b83f8f452 authored about 2 years ago by Ben Origas <[email protected]>
This doesn't appear to be needed

881a53ec927949c4375186779e7727f3f852761c authored about 2 years ago by Alan McGovern <[email protected]>
[core] Add padding file support for webseeds

When fetching data from a web seed, ensure padding
data is just written as zeros rather than fet...

44d7b1f4aa40fecde9dfff1f714ffdf6b4913fc0 authored about 2 years ago by Alan McGovern <[email protected]>
Start web seed if the trigger is 0

fce2431ed3267dfe0fb7e64d8f6c69ceea2841ac authored about 2 years ago by Ben Origas <[email protected]>
Merge pull request #577 from borigas/WebSeedSpeedTrigger0

Start web seed if the speed trigger is 0

29c5d70096bdf8d35be56d9e0e8145d973567c43 authored about 2 years ago by Alan McGovern <[email protected]>
Start web seed if the trigger is 0

93e6a62d8b9c9e55cc4005675beab3048d43e010 authored about 2 years ago by Ben Origas <[email protected]>
Missed csproj for stub http host

fe13a59fae50d713142fb21d139569e787f9488f authored about 2 years ago by Ben Origas <[email protected]>
Test to show web seed download issue

0e12bc86cfd0d88fd16e04be2b930f1a515663f8 authored about 2 years ago by Ben Origas <[email protected]>
Merge pull request #575 from alanmcgovern/fixup-modes

Refactor Mode/IMode to make it clearer what logic is being executed as part of each mode. As par...

603d0e9b8132cbd46af2f2be076bfca660476b94 authored about 2 years ago by Alan McGovern <[email protected]>
[core] Share 'PreLogicTick' logic

MetadataMode, DownloadMode and PieceHashesMode all have the same
'PreLogicTick' logic now.

This...

4c669448b622521fff3699d8d3513955ea87cef9 authored about 2 years ago by Alan McGovern <[email protected]>
[core] Re-announce in MetadataMode and PieceHashesMode

Rely on the standard re-announce logic to decide when a
new announce needs to be made.

This ens...

ff9d31e69d7c8f2245d9c04cf7bd5200037a91db authored about 2 years ago by Alan McGovern <[email protected]>
[core] Reformat some of the code

8bda4ba4920904f058f37135c0fccab1bda0514c authored about 2 years ago by Alan McGovern <[email protected]>
[core] Remove EngineSettings from HashingMode

It's unused here anyway.

c2573a0f5b0dc42604ade30369d75f1326175144 authored about 2 years ago by Alan McGovern <[email protected]>
[core] Move ErrorMode to implement IMode

d35092dc8361d57bf91768fdbdfc7ca7812b9a48 authored about 2 years ago by Alan McGovern <[email protected]>
[core] Move StoppingMode to implement IMode

11e0a46daa866d0d7acd5518039d89391aeb93f2 authored about 2 years ago by Alan McGovern <[email protected]>
[core] Move StartingMode to implement IMode

6a8863b32ddeb4e7051abc89b020a04b2716416b authored about 2 years ago by Alan McGovern <[email protected]>
[core] Move StoppedMode to implement IMode

Much simpler!

0ab5e66bbd55304380579b6f1a7c60c40fe9c013 authored about 2 years ago by Alan McGovern <[email protected]>
[core] Simplify HashingMode

Implement IMode directly so there's definitely no unintentional
shared logic between modes.

Add...

a53043d6bf26f863ce5a813f6408b5f56394b328 authored about 2 years ago by Alan McGovern <[email protected]>