]> Sergey Matveev's repositories - btrtrc.git/log
btrtrc.git
3 years agoUpdate peer cancel assumptions and return
Matt Joiner [Mon, 6 Dec 2021 08:02:29 +0000 (19:02 +1100)]
Update peer cancel assumptions and return

3 years agoImprove panic message
Matt Joiner [Fri, 3 Dec 2021 10:31:40 +0000 (21:31 +1100)]
Improve panic message

3 years agoTry request stealing
Matt Joiner [Fri, 3 Dec 2021 10:30:41 +0000 (21:30 +1100)]
Try request stealing

3 years agoDon't try to request anything without the torrent info
Matt Joiner [Fri, 3 Dec 2021 05:41:52 +0000 (16:41 +1100)]
Don't try to request anything without the torrent info

3 years agoWait between duplicate requests
Matt Joiner [Thu, 2 Dec 2021 02:10:02 +0000 (13:10 +1100)]
Wait between duplicate requests

3 years agoStop iterating pieces when storage is exhausted
Matt Joiner [Wed, 1 Dec 2021 08:31:29 +0000 (19:31 +1100)]
Stop iterating pieces when storage is exhausted

3 years agoUse interfaces to lazily expose the bare minimum inputs to GetRequestablePieces
Matt Joiner [Wed, 1 Dec 2021 08:21:25 +0000 (19:21 +1100)]
Use interfaces to lazily expose the bare minimum inputs to GetRequestablePieces

3 years agoProvide mapping from infohash to Torrent in Input
Matt Joiner [Wed, 1 Dec 2021 04:20:42 +0000 (15:20 +1100)]
Provide mapping from infohash to Torrent in Input

3 years agoImplement piece request ordering with retained state
Matt Joiner [Wed, 1 Dec 2021 03:38:47 +0000 (14:38 +1100)]
Implement piece request ordering with retained state

3 years agoAvoid reflection sorting request pieces
Matt Joiner [Tue, 30 Nov 2021 10:31:32 +0000 (21:31 +1100)]
Avoid reflection sorting request pieces

3 years agoUse indices to lookup pieces for comparison
Matt Joiner [Tue, 30 Nov 2021 04:26:05 +0000 (15:26 +1100)]
Use indices to lookup pieces for comparison

3 years agoCache piece request orderings
Matt Joiner [Tue, 30 Nov 2021 04:18:38 +0000 (15:18 +1100)]
Cache piece request orderings

3 years agoRetract last few minor versions with peer-requesting issues
Matt Joiner [Sun, 12 Dec 2021 07:24:27 +0000 (18:24 +1100)]
Retract last few minor versions with peer-requesting issues

(cherry picked from commit 85a436a5ca75a47a52dcab9648d85f3c3fb53e35)

3 years agoRevert "Link to godocs.io for documentation"
Matt Joiner [Sun, 12 Dec 2021 06:20:02 +0000 (17:20 +1100)]
Revert "Link to godocs.io for documentation"

This reverts commit c2ed60f9f2d100ddd15a38a6c260121a9ad6e893.

3 years agoPartition piece request strategy by storage capacity key
Matt Joiner [Mon, 29 Nov 2021 02:07:18 +0000 (13:07 +1100)]
Partition piece request strategy by storage capacity key

3 years agoDo webseed request updates asynchronously
Matt Joiner [Mon, 6 Dec 2021 08:24:04 +0000 (19:24 +1100)]
Do webseed request updates asynchronously

Fixes a bug where received chunks are immediately requested while still being processed.

3 years agoAdd more identifying information to PeerConn.String
Matt Joiner [Mon, 6 Dec 2021 08:02:55 +0000 (19:02 +1100)]
Add more identifying information to PeerConn.String

Some logs for unexpected protocol violations could be helped by them.

3 years agoAdd generalized decodeJsonByteString and a fuzz target for it
Matt Joiner [Sat, 11 Dec 2021 02:43:25 +0000 (13:43 +1100)]
Add generalized decodeJsonByteString and a fuzz target for it

3 years agoAdd failing bencode fuzz input
Matt Joiner [Fri, 3 Dec 2021 06:15:59 +0000 (17:15 +1100)]
Add failing bencode fuzz input

3 years agoTransmission does not reject cancelled requests
Matt Joiner [Tue, 7 Dec 2021 03:16:02 +0000 (14:16 +1100)]
Transmission does not reject cancelled requests

3 years agoDon't log webseed request context cancellation results
Matt Joiner [Mon, 6 Dec 2021 08:24:48 +0000 (19:24 +1100)]
Don't log webseed request context cancellation results

3 years agobencode: Avoid allocating interface string up front
Matt Joiner [Fri, 10 Dec 2021 04:10:26 +0000 (15:10 +1100)]
bencode: Avoid allocating interface string up front

This should fix crashes during fuzzing. It's not a complete fix, we really want to limit the amount a given Decode can allocate. Maybe Go isn't the right language for this.

3 years agobencode: Fix decoding integer with leading +
Matt Joiner [Fri, 10 Dec 2021 03:29:35 +0000 (14:29 +1100)]
bencode: Fix decoding integer with leading +

3 years agobencode: Enforce dict key ordering
Matt Joiner [Fri, 10 Dec 2021 03:05:00 +0000 (14:05 +1100)]
bencode: Enforce dict key ordering

Fix bencode dict key ordering in HTTP tracker test

3 years agobencode incorrectly parsed integers with leading zeroes
Matt Joiner [Fri, 10 Dec 2021 02:36:53 +0000 (13:36 +1100)]
bencode incorrectly parsed integers with leading zeroes

3 years agoAdd bencode FuzzInterfaceRoundTrip
Matt Joiner [Fri, 10 Dec 2021 02:35:57 +0000 (13:35 +1100)]
Add bencode FuzzInterfaceRoundTrip

3 years agoShuffle duplicate requests
Matt Joiner [Sun, 12 Dec 2021 05:56:00 +0000 (16:56 +1100)]
Shuffle duplicate requests

Add missing import

3 years agoGenerate full sintel magnet link in fs test
Matt Joiner [Wed, 1 Dec 2021 23:50:02 +0000 (10:50 +1100)]
Generate full sintel magnet link in fs test

3 years agoAdd sintel.torrent
Matt Joiner [Wed, 1 Dec 2021 23:49:30 +0000 (10:49 +1100)]
Add sintel.torrent

3 years agoFix races using resources on Close
Matt Joiner [Wed, 1 Dec 2021 07:24:17 +0000 (18:24 +1100)]
Fix races using resources on Close

3 years agoDon't use the Client's IP blocklist after the Client is closed
Matt Joiner [Wed, 1 Dec 2021 04:02:36 +0000 (15:02 +1100)]
Don't use the Client's IP blocklist after the Client is closed

Fixes a segfault due to using a memory mapped blocklist in confluence.

3 years agoRemove unused torrent_pending_pieces.go
Matt Joiner [Wed, 1 Dec 2021 00:27:16 +0000 (11:27 +1100)]
Remove unused torrent_pending_pieces.go

Unfortunately github.com/elliotchance/orderedmap is still used in ./analysis, so no deps are removed.

3 years agoFilter update requests on piece priority change by peer choking and allowed fast
Matt Joiner [Tue, 30 Nov 2021 04:19:59 +0000 (15:19 +1100)]
Filter update requests on piece priority change by peer choking and allowed fast

3 years agoEnsure peerRequests.torrentStrategyInput is set
Matt Joiner [Mon, 29 Nov 2021 02:46:44 +0000 (13:46 +1100)]
Ensure peerRequests.torrentStrategyInput is set

3 years agoPEX: remove workaround for krpc marshaller
Yaroslav Kolomiiets [Wed, 8 Dec 2021 13:02:36 +0000 (13:02 +0000)]
PEX: remove workaround for krpc marshaller

3 years agoPEX: use new NodeAddr search methods in krpc
Yaroslav Kolomiiets [Wed, 8 Dec 2021 10:16:54 +0000 (10:16 +0000)]
PEX: use new NodeAddr search methods in krpc

3 years agoPEX: fluid event log
Yaroslav Kolomiiets [Mon, 6 Dec 2021 18:46:25 +0000 (18:46 +0000)]
PEX: fluid event log

3 years agoFix wasm build
Matt Joiner [Tue, 7 Dec 2021 02:07:58 +0000 (13:07 +1100)]
Fix wasm build

This was broken in the move to zombiezen sqlite, which still doesn't work on WASM/JS.

3 years agoDon't fail-fast on go versions
Matt Joiner [Tue, 7 Dec 2021 01:42:35 +0000 (12:42 +1100)]
Don't fail-fast on go versions

3 years agoHandle 503 returns from webseed peer endpoints
Matt Joiner [Mon, 6 Dec 2021 04:14:59 +0000 (15:14 +1100)]
Handle 503 returns from webseed peer endpoints

3 years agoRecord an observation about why webseed peers are doing most of the work in recent...
Matt Joiner [Thu, 2 Dec 2021 02:48:52 +0000 (13:48 +1100)]
Record an observation about why webseed peers are doing most of the work in recent testing

3 years agoDo webseed request parts sequentially
Matt Joiner [Thu, 2 Dec 2021 02:47:06 +0000 (13:47 +1100)]
Do webseed request parts sequentially

This means we can treat the number of bytes in the result with enough accuracy to decide if we should count it as a wasted chunk. Also I'm not sure why it was a good idea to do parts of a request in parallel anyway, it could just lead to spikes in outstanding requests to the webseed, rather than sticking to the predictable maxRequests limit.

3 years agoHandle cancelled webseed peer requests if they're not active
Matt Joiner [Thu, 2 Dec 2021 02:10:54 +0000 (13:10 +1100)]
Handle cancelled webseed peer requests if they're not active

3 years agoCheck if Torrent is closed before receiving webseed chunks
Matt Joiner [Fri, 3 Dec 2021 10:31:16 +0000 (21:31 +1100)]
Check if Torrent is closed before receiving webseed chunks

3 years agoFix minimum peer extensions error message
Matt Joiner [Fri, 3 Dec 2021 09:36:34 +0000 (20:36 +1100)]
Fix minimum peer extensions error message

3 years agoReduce idle request updates due to choke and unchoke messages
Matt Joiner [Mon, 29 Nov 2021 01:12:30 +0000 (12:12 +1100)]
Reduce idle request updates due to choke and unchoke messages

3 years agoMerge branch 'udp-tracker-no-dial' into te
Matt Joiner [Mon, 29 Nov 2021 00:19:54 +0000 (11:19 +1100)]
Merge branch 'udp-tracker-no-dial' into te

3 years agoRemove unused peer stuff in request strategy
Matt Joiner [Sun, 28 Nov 2021 23:14:16 +0000 (10:14 +1100)]
Remove unused peer stuff in request strategy

3 years agoOptimize the use of worstConnSlice again
Matt Joiner [Sun, 28 Nov 2021 23:07:48 +0000 (10:07 +1100)]
Optimize the use of worstConnSlice again

3 years agoOptimize Torrent.haveAnyPieces
Matt Joiner [Sun, 28 Nov 2021 13:44:24 +0000 (00:44 +1100)]
Optimize Torrent.haveAnyPieces

3 years agoAnnounce to DHT if we want conns, not just peers
Matt Joiner [Sun, 28 Nov 2021 11:46:45 +0000 (22:46 +1100)]
Announce to DHT if we want conns, not just peers

3 years agoWanting peers is a subset of wanting conns
Matt Joiner [Sun, 28 Nov 2021 11:37:56 +0000 (22:37 +1100)]
Wanting peers is a subset of wanting conns

3 years agoDon't want conns for seeding unless we have a piece
Matt Joiner [Sun, 28 Nov 2021 11:40:53 +0000 (22:40 +1100)]
Don't want conns for seeding unless we have a piece

3 years agoPeers with all pieces have wanted pieces only if we want any piece
Matt Joiner [Sun, 28 Nov 2021 11:36:19 +0000 (22:36 +1100)]
Peers with all pieces have wanted pieces only if we want any piece

3 years agoAbstract worseConn comparisons and add tests
Matt Joiner [Sun, 28 Nov 2021 06:06:10 +0000 (17:06 +1100)]
Abstract worseConn comparisons and add tests

3 years agoRename worst_conns.go
Matt Joiner [Sun, 28 Nov 2021 01:53:18 +0000 (12:53 +1100)]
Rename worst_conns.go

3 years agoMerge branch 'bsi-pending-requests' into te
Matt Joiner [Fri, 26 Nov 2021 22:38:58 +0000 (09:38 +1100)]
Merge branch 'bsi-pending-requests' into te

3 years agoUse modernc.org/sqlite version that fixes temp dir race
Matt Joiner [Fri, 26 Nov 2021 06:06:13 +0000 (17:06 +1100)]
Use modernc.org/sqlite version that fixes temp dir race

3 years agoComment out pending requests tests and asserts
Matt Joiner [Thu, 25 Nov 2021 11:59:20 +0000 (22:59 +1100)]
Comment out pending requests tests and asserts

These need to be updated. BSI for pending requests removes an enormous amount of memory use for very large torrents.

3 years agoRevert "Use a flat slice for pending request counts"
Matt Joiner [Thu, 25 Nov 2021 11:32:52 +0000 (22:32 +1100)]
Revert "Use a flat slice for pending request counts"

This reverts commit dfc421824ce6c146ff9d9062ad25748c0f8c9990.

3 years agotracker/udp: Panic on read errors if ConnClient not closed
Matt Joiner [Mon, 22 Nov 2021 21:35:45 +0000 (08:35 +1100)]
tracker/udp: Panic on read errors if ConnClient not closed

There's nothing exposed to handle this error currently, and if it occurs, it's better not to fail in silence. I'm currently debugging a situation where ConnClients stop working, this would be a condition we'd want to know about.

3 years agoImprove logging of UDP tracker packet dispatch error
Matt Joiner [Mon, 22 Nov 2021 21:33:29 +0000 (08:33 +1100)]
Improve logging of UDP tracker packet dispatch error

3 years agoWrap UDP tracker response error
Matt Joiner [Mon, 22 Nov 2021 21:32:25 +0000 (08:32 +1100)]
Wrap UDP tracker response error

3 years agoDon't dial in UDP tracking
Matt Joiner [Mon, 22 Nov 2021 07:05:50 +0000 (18:05 +1100)]
Don't dial in UDP tracking

This could fix an issue where tracker addresses change, but we're already bound to a particular address and so fail to receive any more responses.
It should also make it easier to share UDP sockets between UDP tracker clients, although that's not currently implemented.

3 years agoDoc comments
Matt Joiner [Mon, 22 Nov 2021 07:06:27 +0000 (18:06 +1100)]
Doc comments

3 years agoRemove CGO build flags for pure-Go squirrel branch
Matt Joiner [Fri, 19 Nov 2021 09:29:30 +0000 (20:29 +1100)]
Remove CGO build flags for pure-Go squirrel branch

3 years agoUse zombiezen branch of squirrel
Matt Joiner [Fri, 19 Nov 2021 09:10:07 +0000 (20:10 +1100)]
Use zombiezen branch of squirrel

3 years agogofumpt
Matt Joiner [Fri, 19 Nov 2021 05:19:32 +0000 (16:19 +1100)]
gofumpt

3 years agoUse zombiezen sqlite for piece completion
Matt Joiner [Fri, 19 Nov 2021 05:18:41 +0000 (16:18 +1100)]
Use zombiezen sqlite for piece completion

3 years agoQuote peer extension names to expvar
Matt Joiner [Fri, 19 Nov 2021 02:02:42 +0000 (13:02 +1100)]
Quote peer extension names to expvar

3 years agoPull synchronous firewall callback performance improvement
Matt Joiner [Wed, 17 Nov 2021 03:24:38 +0000 (14:24 +1100)]
Pull synchronous firewall callback performance improvement

Reduces CPU overhead when receiving lot of UDP traffic.

3 years agoOptimize PeerConn.peerHasAllPieces
Matt Joiner [Wed, 17 Nov 2021 03:01:11 +0000 (14:01 +1100)]
Optimize PeerConn.peerHasAllPieces

3 years agoAvoid calling net.Conn methods with the Client mutex locked
Matt Joiner [Wed, 17 Nov 2021 03:00:50 +0000 (14:00 +1100)]
Avoid calling net.Conn methods with the Client mutex locked

The utp firewall callback might want to use it. I can't think of a better way to determine with an incoming connection request should be blocked.

3 years agoUse tagged version of github.com/anacrolix/fuse v1.38.0
Matt Joiner [Tue, 16 Nov 2021 07:27:11 +0000 (18:27 +1100)]
Use tagged version of github.com/anacrolix/fuse

3 years agoSwitch to github.com/anacrolix/fuse
Matt Joiner [Tue, 16 Nov 2021 07:20:02 +0000 (18:20 +1100)]
Switch to github.com/anacrolix/fuse

3 years agoRemove dependency on and exclude of github.com/willf/bitset
Matt Joiner [Tue, 16 Nov 2021 06:36:48 +0000 (17:36 +1100)]
Remove dependency on and exclude of github.com/willf/bitset

3 years agoProvide context to readahead func
Matt Joiner [Sun, 14 Nov 2021 02:52:05 +0000 (13:52 +1100)]
Provide context to readahead func

3 years agoAdd Reader.SetReadaheadFunc
Matt Joiner [Wed, 10 Nov 2021 23:24:28 +0000 (10:24 +1100)]
Add Reader.SetReadaheadFunc

Fixes https://github.com/anacrolix/torrent/issues/687.

3 years agoAdd a comment about not discarding in webseed OK response bodies
Matt Joiner [Sun, 14 Nov 2021 03:01:46 +0000 (14:01 +1100)]
Add a comment about not discarding in webseed OK response bodies

3 years agoDon't log legitimate non-range requests v1.37.0
Matt Joiner [Fri, 12 Nov 2021 04:58:32 +0000 (15:58 +1100)]
Don't log legitimate non-range requests

3 years agoShould fix failing go1.16 CI build
Matt Joiner [Fri, 12 Nov 2021 04:18:20 +0000 (15:18 +1100)]
Should fix failing go1.16 CI build

3 years agoImprove error handling for bad webseeds
Matt Joiner [Fri, 12 Nov 2021 03:43:22 +0000 (14:43 +1100)]
Improve error handling for bad webseeds

DNS "no such host" errors didn't interrupt the stream of outbound requests.

3 years agoPass HTTP Proxy config into webseeding HTTP client
Matt Joiner [Fri, 12 Nov 2021 03:16:14 +0000 (14:16 +1100)]
Pass HTTP Proxy config into webseeding HTTP client

3 years agoRemove unused Client.updateRequests
Matt Joiner [Fri, 12 Nov 2021 02:55:43 +0000 (13:55 +1100)]
Remove unused Client.updateRequests

3 years agoBoost webseed max requests
Matt Joiner [Fri, 12 Nov 2021 02:51:58 +0000 (13:51 +1100)]
Boost webseed max requests

3 years agoIncrement webseed peer piece availability
Matt Joiner [Fri, 12 Nov 2021 02:41:55 +0000 (13:41 +1100)]
Increment webseed peer piece availability

3 years agoAllow non-partial webseed part responses for small files
Matt Joiner [Fri, 12 Nov 2021 02:30:13 +0000 (13:30 +1100)]
Allow non-partial webseed part responses for small files

3 years agowebseed: Close unused part responses after error
Matt Joiner [Fri, 12 Nov 2021 01:40:15 +0000 (12:40 +1100)]
webseed: Close unused part responses after error

Also don't bother to read their response bodies.

3 years agoDon't use non-directory webseed URLs for multi-file torrents
Matt Joiner [Fri, 12 Nov 2021 01:37:40 +0000 (12:37 +1100)]
Don't use non-directory webseed URLs for multi-file torrents

3 years agoMake TorrentSpecFromMetaInfoErr still usable on info error
Matt Joiner [Thu, 11 Nov 2021 23:46:35 +0000 (10:46 +1100)]
Make TorrentSpecFromMetaInfoErr still usable on info error

3 years agoComment that BEP 19 is WebSeeds
Matt Joiner [Thu, 11 Nov 2021 23:45:47 +0000 (10:45 +1100)]
Comment that BEP 19 is WebSeeds

3 years agocmd/torrentfs: Add missing envpprof.Stop
Matt Joiner [Thu, 11 Nov 2021 23:37:21 +0000 (10:37 +1100)]
cmd/torrentfs: Add missing envpprof.Stop

3 years agoPull uninitialized DHT store fix from anacrolix/dht v1.36.0
Matt Joiner [Tue, 9 Nov 2021 22:48:01 +0000 (09:48 +1100)]
Pull uninitialized DHT store fix from anacrolix/dht

Fixes https://github.com/anacrolix/torrent/issues/686.

3 years agogofumpt
Matt Joiner [Mon, 8 Nov 2021 03:47:01 +0000 (14:47 +1100)]
gofumpt

3 years agoImprove dht bootstrap stats logging
Matt Joiner [Thu, 4 Nov 2021 22:30:25 +0000 (09:30 +1100)]
Improve dht bootstrap stats logging

3 years agocmd/torrent: Add serve subcommand
Matt Joiner [Thu, 4 Nov 2021 09:02:55 +0000 (20:02 +1100)]
cmd/torrent: Add serve subcommand

3 years agobencode: Fix marshalling of unaddressable array of bytes
Matt Joiner [Thu, 4 Nov 2021 09:01:25 +0000 (20:01 +1100)]
bencode: Fix marshalling of unaddressable array of bytes

3 years agoExport addTorrentOpts
Matt Joiner [Thu, 4 Nov 2021 09:00:31 +0000 (20:00 +1100)]
Export addTorrentOpts

Now I see what the lint was complaining about.

3 years agoMove download subcmd code into separate file
Matt Joiner [Thu, 4 Nov 2021 00:36:34 +0000 (11:36 +1100)]
Move download subcmd code into separate file

3 years agocmd/torrent: Add bencode {json,spew} commands
Matt Joiner [Wed, 3 Nov 2021 02:49:06 +0000 (13:49 +1100)]
cmd/torrent: Add bencode {json,spew} commands