Matt Joiner
ebd19af795
Merge branch 'request-strategy-rewrite'
2021-06-21 12:04:06 +10:00
Zilog8
e2a559e243
Allow Storage Backends to do their own Hashing ( #518 )
...
* Allow Storage Backends to do their own Hashing
- Describes an optional interface 'SelfHashing' that a storage backend's type implementing 'PieceImpl' may also implement in order to calculate piece hashsums itself.
- Alters the 'hashPiece' function in the torrent package to look for types implementing 'SelfHashing' . If not implemented, calculate the hash as usual.
2021-06-08 15:45:35 +10:00
Matt Joiner
47c49735fc
Fix race in piece availability runs
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
95d808d3c5
Use rejiggered missinggo bitmap
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
f19564d597
Improve piece availability status output
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
99a7cb9291
Missed piece availability code
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
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
0830589b0a
Pass tests with new full-client request strategy implementation
2021-06-07 13:01:39 +10:00
Matt Joiner
f5d2ba37bc
Count peers added from DHT for logging
2021-06-07 12:57:32 +10:00
Matt Joiner
d7c549d2e4
Add TODOs around setting info bytes
2021-06-07 12:57:09 +10:00
Matt Joiner
47284cf426
Rename Torrent.{add,delete}Connection
2021-05-14 15:39:01 +10:00
Matt Joiner
4ab20f60b6
Improve some lock handling under panics
2021-05-14 15:36:53 +10:00
Matt Joiner
305ba51dc2
Big logging cleanup to improve experience from README
2021-05-04 12:44:51 +10:00
Matt Joiner
28f17be267
Close all peer types when Torrent closed
2021-02-19 12:58:20 +11:00
Matt Joiner
7e2c2106e6
Include webseed URLs in output of Torrent.Metainfo
2021-02-18 14:37:06 +11:00
Matt Joiner
927866e881
Limit conns per host across webseed clients
2021-02-09 19:22:38 +11:00
Matt Joiner
6bc2a2a6ac
Revert "Fix stalls for responsive transfer tests"
...
This reverts commit d48c6ae6dc
.
2021-02-03 18:55:54 +11:00
Matt Joiner
d48c6ae6dc
Fix stalls for responsive transfer tests
...
Looks like there's a timing issue between marking things complete, and already having decided to read the data from incomplete chunks.
2021-02-02 10:41:39 +11:00
Matt Joiner
60e992ec97
Rework webseed peers to use a pool of requesters
...
This fixes the limitation that the max outstanding requests for a webseed peer must match the request concurrency. It should mean less recalculation, and more pipelining.
2021-01-29 16:01:35 +11:00
Matt Joiner
4078644db9
Pass callbacks to webseed peers
2021-01-28 18:25:06 +11:00
Matt Joiner
1ac5811990
Remove requests as soon as chunk data is received
...
Note that this breaks the backpressure on webseed responses again, and should be fixed shortly.
2021-01-28 16:36:35 +11:00
Matt Joiner
456a2f7c5d
Expose more callbacks and Request and ChunkSpec
2021-01-28 14:23:22 +11:00
Matt Joiner
b5215ea7e8
Expose Peer.Network to replace Peer.RemoteAddr.Network
2021-01-25 15:49:48 +11:00
Matt Joiner
955e337b78
Generate a RemoteAddr for webseed Peers
2021-01-25 15:49:48 +11:00
Matt Joiner
27108bd2f7
Export Peer
2021-01-25 15:49:48 +11:00
ucwong
52bb7f7a39
connection drop log debug level
2021-01-07 00:21:59 +11:00
Matt Joiner
ded6c19edb
Add the DropMutuallyCompletePeers ClientConfig field
2021-01-05 16:58:45 +11:00
Matt Joiner
d713aaf280
Rework active announce limiter to reduce contention
2020-12-15 15:29:45 +11:00
Matt Joiner
99ddad31c9
Track piece marking state separately
2020-11-21 13:44:23 +11:00
Matt Joiner
6cceb5749d
Mark piece complete without Client lock
2020-11-16 16:37:11 +11:00
Matt Joiner
e6da640bb2
Tidy up doc, file names, naming
2020-11-09 10:56:45 +11:00
Matt Joiner
7cb74b158f
Replace storage.IncompletePieceToWriter with io.Writer
...
It was incorrect to assume piece hashing only operates on incomplete chunk data. This actually uncovered a bug where duplicate hash checks occurred, and the redundant checks would fail due to not reading the completed data.
2020-11-06 16:23:38 +11:00
Matt Joiner
636b20b860
Add write incomplete/consecutive chunks interfaces
2020-11-02 15:35:07 +11:00
Matt Joiner
43891309ad
Return errors from Reader if data downloading won't occur
...
Chunk write errors to storage can disable data download. Previously Readers would wait indefinitely for the data to become available. This change returns an error instead of stalling.
2020-10-27 14:10:17 +11:00
Matt Joiner
1bfca56e94
Read from more than a single piece in each read to Torrent storage
2020-10-27 12:24:43 +11:00
Matt Joiner
c1d189ed31
Performance improvements to PEX
2020-10-23 08:58:55 +11:00
Matt Joiner
417d7d1d48
Tweaks to storage error and completion handling
2020-10-11 12:54:03 +11:00
Matt Joiner
01dfc28484
Set tracker announce timeout back to default
...
Add lots of comments about how this works and why.
2020-10-01 11:45:47 +10:00
Matt Joiner
a3827099c4
Limit simultaneous announces to the same URL
2020-10-01 10:43:10 +10:00
Matt Joiner
a2c7b384df
Limit half-open connections at the Client level
2020-09-30 16:56:27 +10:00
Matt Joiner
1cdae13700
Fix conn status string for WebRTC connections
2020-09-29 16:21:54 +10:00
Matt Joiner
9d0ea15044
Expose peer.RemoteAddr
2020-07-15 16:16:14 +10:00
Matt Joiner
12ace95493
Tidy up webseed peer naming and unused types
2020-06-04 11:58:18 +10:00
Matt Joiner
62e7f29a0c
Fix panic in webseed request rejection logging
...
Also use a new helper in Logger to simplify things.
2020-06-04 11:51:17 +10:00