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
For ipv4 and ipv6 connections we'll need access to this so we
can add the peer to the appropriat...
They rely on the SyncronizationContext being set.
0f7cdaf41da474305795697be8885eb9ce3c9d65 authored almost 2 years ago by Alan McGovern <[email protected]>
Always install 3.1.x, 5.x and 6.x when running tests
as we can't rely on azure devops having any...
We just care about the id associated with the DhtEngine, we
don't actually need (or want) it to ...
[PieceWriter] Fix a threading bug and clean up stale state
7931689dd88600cff7b276ae26a7be7ac250b9ed authored almost 2 years ago by Alan McGovern <[email protected]>
DiskWriter has a dictionary mapping ITorrentFile -> list of open
streams. When the final stream ...
Whoops - there was a 'ConfigureAwait(false)' here which caused
improper threaded access to the u...
This can be safely disposed on a background thread as the
underlying stream cannot be in use any...
If a connection has already been made to a particular ip/port and
the peer_id is known, or if a...
Now this can be invoked while the torrent is active.
096f1bddd8cbd2845c2ab24d337d9080ea4535f8 authored almost 2 years ago by Alan McGovern <[email protected]>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]>
The main part of this change is that the actual IPEndPoint
which the listnener has been bound to...
Sometimes the port isn't released fast enough and the next test
which tries to claim it ends up ...
When hosting a tracker, an unexpected exception looks like it
could cause an empty response to b...
0c919b226e25e53eedc97adeefc93870c5367aa0 authored almost 2 years ago by alan.mcgovern <[email protected]>
2a2243c07209fa79a86d70a72c3d92f987465022 authored almost 2 years ago by Alan McGovern <[email protected]>
If a peer sends a HandshakeMessage with a 'peer_id' that *does not*
match the 'peer_id' it sent ...
* [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]>[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
If the ratelimiter is set ...
0030a5b146f7e013e9d5cc2aca04696e29857189 authored almost 2 years ago by Alan McGovern <[email protected]>
When decoding a tracker response which contains non-compact
data, ensure IPv6 peers are parsed w...
Integration tests covering ipv6 support
774c636f0e29b966d2ba269b7ede7533feb89a33 authored almost 2 years ago by Alan McGovern <[email protected]>21b49379889f2058ecefa39cedaedc7521646649 authored almost 2 years ago by Alan McGovern <[email protected]>
4616dfb15decb144944f0e2e88d7ec69c1230eaa authored almost 2 years ago by Alan McGovern <[email protected]>
d509dad1a8a57cc4aff5acf032f9088e7c225d9f authored almost 2 years ago by Alan McGovern <[email protected]>
09130895e4e1966ddf4586da1e67a02e3a461913 authored almost 2 years ago by Alan McGovern <[email protected]>
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]>[core] Fix a BEP52 related regression
80843064d4672c774fef887413d67e5c45734754 authored almost 2 years ago by Alan McGovern <[email protected]>
When sorting files for BEP52 compatibility, use an ordinal
comparison rather than the default cu...
[core] Fix several bugs with 'EngineSettings.UsePartialFiles'
e0947a8396674150b4565348f338d61484d58866 authored almost 2 years ago by Alan McGovern <[email protected]>3daf4ef38672d52f4413392bf2114cc45954e0a7 authored almost 2 years ago by Alan McGovern <[email protected]>
This adds several additional tests covering aspects of how this
feature was intended to operate....
This is just for tests, so if an error occurs due to disposing
the http listener, just catch it ...
I had many concerns about the prior approach to closing excess
streams due to how it used a whil...
The support to move files while the torrent is actively running was
added as part of https://git...
Convert 'ReusableExclusiveSemaphore' into 'ReusableSemaphore' and
then port DiskManager to use t...
This would've been a (mostly) cosmetic issue as the parsed IPAddress
object would have reported ...
[core] Refresh the 'AmInterested' status regularly
99b5f9f24fdb7383c7da3c9d3ff7791dd21f8eef authored almost 2 years ago by Alan McGovern <[email protected]>
There are several cases where the 'AmInterested' status can change
for a given peer, and it's no...
[PieceWriter] Add a test covering 'unlimited' open files
35bc6035e2c640ec3a9a1843cd5ca170f666618b authored almost 2 years ago by Alan McGovern <[email protected]>
This regressed as the code which used to validate this
was refactored/rewritten when creating IB...
[ipv6] Add ipv6 support for udp and http trackers
7e6fe58a47db17f8771976a6f7aefbf818c8d2b0 authored almost 2 years ago by Alan McGovern <[email protected]>
For older versions of the .NET framework, use the
'StandardSocketsHttpHandler' nuget as a poly-f...
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]>44be0a1ff4338826fb3706fac7dd24ef86404707 authored almost 2 years ago by Alan McGovern <[email protected]>
If we can't receive a UDP message propagate the failure as a
timeout, not as an invalid response.
40a9f2485a2e31e649e0d156abfc2daa9f4c57b4 authored almost 2 years ago by Alan McGovern <[email protected]>
f29847bf48a740a072fe2ab7932a09f706ec9f2b authored almost 2 years ago by Alan McGovern <[email protected]>
Each tracker can npw have one, or more, connections. When a tracker is
announced to, each connec...
[core] Add full ipv6 support for PeerExchange
8fa95f675c030c287d389176321aad4632c57af2 authored almost 2 years ago by Alan McGovern <[email protected]>
ipv4 and ipv6 peers are captured in the peer exchange manager, with
the ipv4 and ipv6 fields pop...
[core] Support ipv4 and ipv6 compact addresses
8a40c2039b0bb9fc09a6e8127109b2a6976b3e3f authored almost 2 years ago by Alan McGovern <[email protected]>4fe7fe30c9b91fb1c8c2a311630c3a07c7d2d135 authored almost 2 years ago by alan.mcgovern <[email protected]>
[IPV6] Support setting multiple listeners and reported endpoints
fb05f30de238d0e71d1751ab5aa089e356afd3c9 authored almost 2 years ago by Alan McGovern <[email protected]>815a572e4f34d0b7c034249b1cb3f6994fd5000f authored almost 2 years ago by Alan McGovern <[email protected]>
If the user configures an override which uses port '0', then that
means the *real* listen port s...
Whenever we start/stop a listener we also want to map/unmap it's
ports.
Don't rely on dictionary ordering too :)
715343df26d6bddd31791fe78d8d4104d58d0a51 authored almost 2 years ago by Alan McGovern <[email protected]>
The 'ListenEndpoints' is what we configure the engine to listen for
incoming connections on. The...
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]>f98b28f87a7881f1850b2f46273092e4a1b051a4 authored almost 2 years ago by Alan McGovern <[email protected]>
[core] Fix creating ipv6 uris
32f412bb6627071de8ff01fcf07f77821dee2e24 authored almost 2 years ago by Alan McGovern <[email protected]>5b83f92b2c7b4b99ce51fca064e87fe059a08c8f authored almost 2 years ago by Alan McGovern <[email protected]>
We need to wrap the address in square brackets here
402af1cf0e22a99092010bf7cf564d5d50afd59a authored almost 2 years ago by Alan McGovern <[email protected]>
This reverts commit 89d4d881a8999c0e5fd9ef805943f271212c1a54.
A few bug reports came in so i'll ...
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]>
The enumerator is a struct, but the API exposes it as an IEnumerator
which causes it to be boxed...
[core] Skip parsing key if value is an empty string
55770f9486adffd58b889c48f850fbccb2202b19 authored about 2 years ago by Alan McGovern <[email protected]>f161ff8d6f16dd7435f99fa89aa0eee060c70bce authored about 2 years ago by Winter <[email protected]>
[core] Properly specify the System.Memory reference
d321ab70a000e3c6ccad0b0c4bc8f0c4d6dfeed8 authored about 2 years ago by Alan McGovern <[email protected]>cb6d404a20b5912b89c9cd13fa669f3f6ce65f88 authored about 2 years ago by Alan McGovern <[email protected]>
Specify 'Release' configurations properly
85888fa5c896655f42e32da21a074c2d4f303cd4 authored about 2 years ago by Alan McGovern <[email protected]>Maybe this will work?
f59f0534c93005b1a523972d1d835f4c24bcae82 authored about 2 years ago by Alan McGovern <[email protected]>[tests] Close the response after writing the status code
f65622d1feac78be90d5ee7af8db31e593290c29 authored about 2 years ago by Alan McGovern <[email protected]>
If the response is not closed then the connection will be
treated as failed only after the 30 se...
Web Seed Integration Tests
003b30f4a23f5fec44b5a9d5a62af395a011e3d4 authored about 2 years ago by Alan McGovern <[email protected]>
Whoops. The Span/Memory overrides should use the
Length of the Span/Memory, but the byte[] overr...
The ZeroStream implementation always fills the passed-in buffer
with zeros, as any well behaving...
Now net472 tests run properly in the latest VisaulStudio 2022
preview
0bd93fb9d0efbe0fee4c6c392566e63dd19e9f95 authored about 2 years ago by Ben Origas <[email protected]>
7de1f7d9025fea2d422bc0b623216a378e1ec16f authored about 2 years ago by Ben Origas <[email protected]>
67ff4a11bed2d15d764ec022c901cad2495a56bb authored about 2 years ago by Ben Origas <[email protected]>
e21b3c7d8a2707af2c12a9414991f63b83f8f452 authored about 2 years ago by Ben Origas <[email protected]>
881a53ec927949c4375186779e7727f3f852761c authored about 2 years ago by Alan McGovern <[email protected]>
When fetching data from a web seed, ensure padding
data is just written as zeros rather than fet...
fce2431ed3267dfe0fb7e64d8f6c69ceea2841ac authored about 2 years ago by Ben Origas <[email protected]>
Start web seed if the speed trigger is 0
29c5d70096bdf8d35be56d9e0e8145d973567c43 authored about 2 years ago by Alan McGovern <[email protected]>93e6a62d8b9c9e55cc4005675beab3048d43e010 authored about 2 years ago by Ben Origas <[email protected]>
fe13a59fae50d713142fb21d139569e787f9488f authored about 2 years ago by Ben Origas <[email protected]>
0e12bc86cfd0d88fd16e04be2b930f1a515663f8 authored about 2 years ago by Ben Origas <[email protected]>
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]>
MetadataMode, DownloadMode and PieceHashesMode all have the same
'PreLogicTick' logic now.
This...
4c669448b622521fff3699d8d3513955ea87cef9 authored about 2 years ago by Alan McGovern <[email protected]>
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]>8bda4ba4920904f058f37135c0fccab1bda0514c authored about 2 years ago by Alan McGovern <[email protected]>
It's unused here anyway.
c2573a0f5b0dc42604ade30369d75f1326175144 authored about 2 years ago by Alan McGovern <[email protected]>d35092dc8361d57bf91768fdbdfc7ca7812b9a48 authored about 2 years ago by Alan McGovern <[email protected]>
11e0a46daa866d0d7acd5518039d89391aeb93f2 authored about 2 years ago by Alan McGovern <[email protected]>
6a8863b32ddeb4e7051abc89b020a04b2716416b authored about 2 years ago by Alan McGovern <[email protected]>
Much simpler!
0ab5e66bbd55304380579b6f1a7c60c40fe9c013 authored about 2 years ago by Alan McGovern <[email protected]>
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]>