2
0
mirror of synced 2025-02-24 14:48:27 +00:00

517 Commits

Author SHA1 Message Date
Matt Joiner
15f8e77519 Add explicit metadata extension types 2021-06-21 12:14:06 +10:00
Matt Joiner
af1ca91e04 Remove conntrack, expose Torrent.AnnounceToDht, ClientConfig.PeriodicallyAnnounceTorrentsToDht 2021-06-21 12:13:53 +10:00
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 d48c6ae6dc69b7ce23a109cc9ba401e6ab44d831.
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