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
Delete all the bespoke hashing logic and replace it with
DiskManager.GetHashAsync.
DiskManager ...
a9d93708d2e7e16981dcc01edfd8ba63c85c6934 authored over 2 years ago by Alan McGovern <[email protected]>
This will be useful when creating torrents. In this scenario
we want to be able to read a piece ...
Increase some timeouts as some web servers, specifically some
from internet archive, take longer...
These are internal variables so there's no concern about
exposing consts as public API.
There w...
052a0e808e1bb2b4558058c02663a4381ccc1972 authored over 2 years ago by alan.mcgovern <[email protected]>Error out if this is ever negative.
cc8273e89883d5cb6d1f9130a4d132b3718273cc authored over 2 years ago by alan.mcgovern <[email protected]>b9bbb7a9f53935214a179276657d32efd2dc674c authored over 2 years ago by alan.mcgovern <[email protected]>
The bep52 spec is woefully unclear about what happens when a
file is a lot smaller than the piec...
HaveBundle and RequestBundle are cached/reused, so we should just
instantiate a HaveMessage/Requ...
The engine now uses the exact same logic for 'picking'
bittorrent v2 hashes, fetching the metada...
Move piece picker so it relies on two things.
1) The concept of a 'Piece'. Each piece is a thing...
When fetching hashes from other peers, we'll never need to request
hashes for files which have o...
If we are downloading a V2 only torrent we will only have
the V2 infohash in the engine, as such...
Missing a conversion from index -> bytelength here.
9c370024a2b615e2dfd6b383e2c2d368f1a4aefe authored over 2 years ago by alan.mcgovern <[email protected]>5526963b38dec4977204529f7666090704af9fb2 authored over 2 years ago by alan.mcgovern <[email protected]>
This ensures Modes never see a potentially incorrect picker.
f0e3516f522338843e3fd77d386444492e1d6bb4 authored over 2 years ago by alan.mcgovern <[email protected]>ded8b36d1e4b5309f528f325054445e621610eef authored over 2 years ago by alan.mcgovern <[email protected]>
This is a bit easier to reason through for most of the math.
8956ddd09020404f25f61c0dca55f74155117d2f authored over 2 years ago by alan.mcgovern <[email protected]>
Add the core classes used to create and operate merkle trees
This would've been better as a seri...
Oops?
777e1ab73758679f0c142fd426182f8be7d05f36 authored over 2 years ago by alan.mcgovern <[email protected]>c14cdd02f58b638510e98faf425459e707c8084c authored over 2 years ago by alan.mcgovern <[email protected]>
t
6432900ec137d294d2d7bd83bb529f88f465887b authored over 2 years ago by Alan McGovern <[email protected]>bep47
c17222899a45b2def535225c3bdb7b18d1452aba authored over 2 years ago by Alan McGovern <[email protected]>09345a0d7c088f30e898e514e37f91d631ce41f2 authored over 2 years ago by Alan McGovern <[email protected]>
Whoops :) Tests are always important!
96fa486754adaebbf6217df4a90ca2aafb433e24 authored over 2 years ago by Alan McGovern <[email protected]>8dee08b6303d36e354dea2a55ca0cc5b7bb5ccce authored over 2 years ago by Alan McGovern <[email protected]>
e043c938dce1a464c525120be64037eba5a54c1b authored over 2 years ago by Jean-Paul Mikkers <[email protected]>
017a9eba03f7f2c717938a49ead597b750ed4899 authored over 2 years ago by jpmikkers <[email protected]>
This will unblock bep 0047 from merging as md5 hashes are computed
correctly now.
The sha sums ...
527d3c1d7b52e6220efc62dfa48e2910fea724a8 authored over 2 years ago by Alan McGovern <[email protected]>70ce1d049b4f084a704982cc49820c5f5775555d authored over 2 years ago by Alan McGovern <[email protected]>
Add the beginnings of a 'FetchHashes' mode.
a0e4aa8381bfb4ab83ad5c7017d8c923ac6b1652 authored over 2 years ago by Alan McGovern <[email protected]>There's some cleanup for this PR already, but the gist of it is.
1) The torrent metadata is no ...
c0c094d9c3069b77f901c5d8f96c67f3d27fa5c7 authored over 2 years ago by Alan McGovern <[email protected]>
Don't reinstantiate the Random or it'll choose the
same port repeatedly because it's seeded from...
af4b6b2aec4269201167f19b800fa904b6c9caff authored over 2 years ago by Jean-Paul Mikkers <[email protected]>
as the previous file in the torrent.
Ensures empty files at the end of a torrent are never the o...
5a4ad14bdbeeaa7d01b767df41f1781ff93c34cc authored over 2 years ago by Alan McGovern <[email protected]>4c3d77cbbfe3275bd49a2558256be18de513f946 authored over 2 years ago by Alan McGovern <[email protected]>
Simplify the way different pickers are enabled/disabled. The engine will
now create a standard p...
Whoops :)
7cd38d10c74aff02c5f2b247fca896889b7caeea authored over 2 years ago by Alan McGovern <[email protected]>[core] Better read-only bitfield support
a650bacefee854c26daef0795f586a237b8d2361 authored over 2 years ago by Alan McGovern <[email protected]>
By having 'MutableBitfield' be a subclass of 'BitField' it's possible
for users of the library t...
Fails because md5sum isn't present in the torrent
c4845e20ce24b8988a309648fc072c020845bcb5 authored over 2 years ago by jpmikkers <[email protected]>
We can fast path some things here which may slightly improve the
performance of this code at run...
[bep52] Ensure nothing is downloaded before piece hashes are available
34ae67cd40843eeffd96e907517c80f8b2a285af authored over 2 years ago by Alan McGovern <[email protected]>
The addition of this bitfield ensures no pieces are downloaded by the
engine until V2 piece hash...
[bep52] Modify the API to support dynamically retrieving Bep52 hashes
5bce6963365accf338a3030a88a14b2cdf632a93 authored over 2 years ago by Alan McGovern <[email protected]>
We should treat this as having no hash data, and ensure
'isvalid' always returns false. This sho...
The torrent metadata is no longer the source of truth for piece
hashes. Piece hashes are optiona...
e927d6e58bcb3dc4bbbf287f5b5b832cec5a75ec authored over 2 years ago by jpmikkers <[email protected]>
002708a4220eb4c2d2b6d950c35d5bdae7712184 authored over 2 years ago by jpmikkers <[email protected]>
d11dfef5ae5403877eb84b4454988647e6332873 authored over 2 years ago by jpmikkers <[email protected]>
9c169c71f0a2bed1993a48307b44f79037420719 authored over 2 years ago by jpmikkers <[email protected]>
d4b7bf8a43709218867cb4b0be28539550886dac authored over 2 years ago by jpmikkers <[email protected]>
022aa32a396ca50aaf9514eed77448285955a91f authored over 2 years ago by jpmikkers <[email protected]>
091e4039d91507dbfa7e427025c6ff506bf235e5 authored over 2 years ago by jpmikkers <[email protected]>
d4e9d7a9332ac39f500f9d91a31f383d961c7ea0 authored over 2 years ago by jpmikkers <[email protected]>
19e15bebbb0879f9ce6223b14c2b707aea232c6d authored over 2 years ago by jpmikkers <[email protected]>
3494a02ad1d8a0ace46da7720127f4ddb15391d9 authored over 2 years ago by jpmikkers <[email protected]>
476c5f59b931c836cac4b5d40f9eb70d8274576a authored over 2 years ago by jpmikkers <[email protected]>
4035c26d63b7f63621123b17bf8d8dccac74a458 authored over 2 years ago by jpmikkers <[email protected]>
eddd97b4ebd9e374d857fcc84f2428e5493a4001 authored over 2 years ago by jpmikkers <[email protected]>
48778b785842108945cf2db5ac818bc6c3afa63c authored over 2 years ago by Alan McGovern <[email protected]>
This test covers the fix merged as part of
ed563b6da29a01d2a7deb5096d2db2f5460c75b9
5f554dbfb054c817afea6aaae73375c36970cd1d authored over 2 years ago by Alan McGovern <[email protected]>
Hybrid torrents aren't fully supported (yet). To support these the
engine will load them as eith...
piece length is only available when the torrent metadata has been
loaded, so don't expose it on ...
V2 only magnetlink support
1eff6105f75aba8fb35beaf9997aa2170b74ba9b authored over 2 years ago by Alan McGovern <[email protected]>5827f9dfe1fb409b8df38cb270edd245d2d822b4 authored over 2 years ago by jpmikkers <[email protected]>
798b080e0deab7be1e68b040c4a850a184833f86 authored over 2 years ago by jpmikkers <[email protected]>
ac8bb0b3548bb6417d6ff4f35507d6866ef67dcd authored over 2 years ago by jpmikkers <[email protected]>
Consolidate on 'DownloadRate' and 'UploadRate' for everything to
do with sending/receiving data.
This is a bit more threadsafe. While it is usually automatically
handled by ClientEngine, users ...
This is a bit more consistent.
9f12f952ab6bd2458c1d3059e6297a49e10af845 authored over 2 years ago by Alan McGovern <[email protected]>
ClientEngine automatically starts/stops many things, including the
Dht engine registered with th...
e04f5d56e5abd11f291f50d9954671f570bd083a authored over 2 years ago by Alan McGovern <[email protected]>
This can only be changed when the engine isn't running, and at that
point it should only really ...
e7eb78181dfabbfd6d147e63d8717643ca673fbc authored over 2 years ago by Alan McGovern <[email protected]>
d486ff316d87a50272ffee5cc5a71350680ce3b2 authored over 2 years ago by Alan McGovern <[email protected]>
We can pop this in a reusable buffer.
625286745c475f1a8286fce1e67021e1d7567bff authored over 2 years ago by Alan McGovern <[email protected]>
This cropped up as netcoreapp3.0 and net5.0 targets were added
to all the libs which compiled pr...
If the rate limit is high enough then peer connections can/should
always receive in 16kB slices....
Be a little more thorough checking for both the overall max
and the per-torrent max open connect...
We don't need to segregate these i suppose. I've found more uses
for ArraySegment<byte> buffers ...
There's a negligible performance difference when assigning
a buffer to a SocketAsyncEventArgs an...
ReusableTasks 2.0.2 has some perf improvements.
105baf6db5148f4f126edde2ccb099d081b40cee authored over 2 years ago by Alan McGovern <[email protected]>
We can completely skip this check if no files are set to
'DoNotDownload'
IThreadPoolWorkItem allocates less data and does less work.
ef04ed7c731b9748bdda41918d4fd73a14a5747a authored over 2 years ago by Alan McGovern <[email protected]>
There are optimisations scattered in many files now,
for example ThreadSwitcher.
The original code accidentally created a new delegate every
time the timer expired. This iterati...
Apparently this has negative performance implications on
windows, and it's probably not that muc...
95deac2ee94cf4dd293432c03678aef7529812ad authored over 2 years ago by Alan McGovern <[email protected]>
Disregard empty path segments
3fa4fed98f3d2af95dd347edbb689293750e84fd authored over 2 years ago by Alan McGovern <[email protected]>3cf19fbd96c5aedd5111ff8bdaf7f85c84a0cb3f authored over 2 years ago by Alan McGovern <[email protected]>
78df1333d01153081957c500bcfea5b1b7ff96f0 authored over 2 years ago by Alan McGovern <[email protected]>
Nullable reference types
d3d742ce01476c47c13303e71d6cbd55744a689d authored over 2 years ago by Alan McGovern <[email protected]>1f9aeaa90c333b4ea2987c18ca7014a94a6997c1 authored over 2 years ago by Alan McGovern <[email protected]>
9ded661d93b13a1d3ec5eb4a49baccd6730c7d4e authored over 2 years ago by Alan McGovern <[email protected]>
671551acf9c616bb71295757afa0791b25554d72 authored over 2 years ago by Alan McGovern <[email protected]>
5a26356967cc8bc7d7daf90b33476c91393a8645 authored over 2 years ago by Alan McGovern <[email protected]>
19c485c43fc1efa36554f375091f07a3d705280c authored over 2 years ago by Alan McGovern <[email protected]>
e80ab1637fd07fdee677114cef134d11de80c18f authored over 2 years ago by Alan McGovern <[email protected]>
e0bbf6067545e5c10243ff7f5377e70d9bf3c14b authored over 2 years ago by Alan McGovern <[email protected]>