2
0
mirror of synced 2025-02-24 06:38:14 +00:00

2916 Commits

Author SHA1 Message Date
Matt Joiner
259356ccd6 Rework bencode decoding so it might support embedded structs 2021-06-07 13:01:40 +10:00
Matt Joiner
f50b8fc2fa Fix issue with duplicate preallocated requests
Likely introduced by allowing actual and next request states to differ.
2021-06-07 13:01:40 +10:00
Matt Joiner
e0a4831f27 Fix bitmap-related benchmark 2021-06-07 13:01:40 +10:00
Matt Joiner
c895a21a16 Track chunks read for webseed peers too 2021-06-07 13:01:40 +10:00
Matt Joiner
33d3a75cd3 Rename file 2021-06-07 13:01:40 +10:00
Matt Joiner
906db030f3 Add peerConnMsgWriter file
Forgot this earlier, new to Sublime Merge.
2021-06-07 13:01:40 +10:00
Matt Joiner
a2dbec3b4a Add chansync interfaces 2021-06-07 13:01:40 +10:00
Matt Joiner
47c49735fc Fix race in piece availability runs 2021-06-07 13:01:40 +10:00
Matt Joiner
36f52d7a14 Apply next request state asynchronously 2021-06-07 13:01:40 +10:00
Matt Joiner
d37dea1f61 Move peerConnMsgWriter into its own file 2021-06-07 13:01:40 +10:00
Matt Joiner
24ceed61da Break out peerConnWriter 2021-06-07 13:01:40 +10:00
Matt Joiner
925f5d147d Resolve local replaces 2021-06-07 13:01:40 +10:00
Matt Joiner
b43987fcc8 Fix up some crashes around piece availability 2021-06-07 13:01:40 +10:00
Matt Joiner
1a27e14391 Don't always force piece reallocation
The balancing for unforced pieces may not be exactly what we want yet.
2021-06-07 13:01:39 +10:00
Matt Joiner
95d808d3c5 Use rejiggered missinggo bitmap 2021-06-07 13:01:39 +10:00
Matt Joiner
a26e7f9933 Determine peer max requests based on receive speed 2021-06-07 13:01:39 +10:00
Matt Joiner
86524214f5 Merge maxRequests into localClientReqq 2021-06-07 13:01:39 +10:00
Matt Joiner
42bf6b58a6 Fix in decPieceAvailability when we don't have torrent info
Happens when we close a Peer before getting Torrent info.
2021-06-07 13:01:39 +10:00
Matt Joiner
fcc4ef2b95 Fix sqlite piece completion 2021-06-07 13:01:39 +10:00
Matt Joiner
ad298364aa Add client-level max unverified bytes 2021-06-07 13:01:39 +10:00
Matt Joiner
63b0e42731 Get max unverified bytes working 2021-06-07 13:01:39 +10:00
Matt Joiner
307d6d178f Prepare to implement max unverified bytes 2021-06-07 13:01:39 +10:00
Matt Joiner
8e9cb9f2be Do checks for preallocated requests too
Otherwise we reserve requests with the assumption that they can be assigned later, and they actually might not be.
2021-06-07 13:01:39 +10:00
Matt Joiner
9dd85e5bd2 Fix non-deterministic test 2021-06-07 13:01:39 +10:00
Matt Joiner
b80e2b08b5 Get request rebalancing working optimally! 2021-06-07 13:01:39 +10:00
Matt Joiner
4e9f707aeb Move piece allocation to its own func 2021-06-07 13:01:39 +10:00
Matt Joiner
07ba6e9210 New tests and fixes for them
Not complete. There's still a request-stealing balancing issue, but it's functional for now.
2021-06-07 13:01:39 +10:00
Matt Joiner
e7c5ed679f Don't log each applied request 2021-06-07 13:01:39 +10:00
Matt Joiner
26837ee73c Add a working request strategy test 2021-06-07 13:01:39 +10:00
Matt Joiner
0d4e566fc0 Extract request strategy stuff into a separate module 2021-06-07 13:01:39 +10:00
Matt Joiner
233135493f Improve num requests per piece status output 2021-06-07 13:01:39 +10:00
Matt Joiner
f19564d597 Improve piece availability status output 2021-06-07 13:01:39 +10:00
Matt Joiner
ef489f4a44 Fixes to reassigning chunks in requests 2021-06-07 13:01:39 +10:00
Matt Joiner
09823b9e36 Rework to improve work stealing and try to thread peers through all request pieces 2021-06-07 13:01:39 +10:00
Matt Joiner
4577e8a3c1 Forgot to remove initial have all state for webseeds
Later when the webseed was closed, it was assumed that it had contributed to the piece availability count.
2021-06-07 13:01:39 +10:00
Matt Joiner
16eb8a9693 Do requests every 100ms 2021-06-07 13:01:39 +10:00
Matt Joiner
a2fcce5374 Don't need stable sort 2021-06-07 13:01:39 +10:00
Matt Joiner
fc06909014 Improve naming on storage key 2021-06-07 13:01:39 +10:00
Matt Joiner
875ead3582 Reuse pieceRequestOrder slice 2021-06-07 13:01:39 +10:00
Matt Joiner
99a7cb9291 Missed piece availability code 2021-06-07 13:01:39 +10:00
Matt Joiner
d9172ef277 Comments 2021-06-07 13:01:39 +10:00
Matt Joiner
6d25c99ac6 Ignore pieces for request after accounting for storage 2021-06-07 13:01:39 +10:00
Matt Joiner
b508877d82 Track peer availability at the Torrent-level 2021-06-07 13:01:39 +10:00
Matt Joiner
2d2456249a Remove unused pieceRequestOrder in Client 2021-06-07 13:01:39 +10:00
Matt Joiner
52e6979457 go mod tidy 2021-06-07 13:01:39 +10:00
Matt Joiner
977a3ec00f Use multiless with Float64 2021-06-07 13:01:39 +10:00
Matt Joiner
9c9ba1aeac PeerConn.post becomes PeerConn.write 2021-06-07 13:01:39 +10:00
Matt Joiner
56e2a8a3a6 Fix download rate, status output 2021-06-07 13:01:39 +10:00
Matt Joiner
5f8471e21b Rework storage.TorrentImpl to support shared capacity key 2021-06-07 13:01:39 +10:00
Matt Joiner
6e97ce952f Tidy up request and cancel 2021-06-07 13:01:39 +10:00