]>
Sergey Matveev's repositories - btrtrc.git/log
Matt Joiner [Thu, 9 Dec 2021 10:49:29 +0000 (21:49 +1100)]
Minimize allocations due to heap escapes
Matt Joiner [Tue, 7 Dec 2021 03:19:44 +0000 (14:19 +1100)]
Only steal an odd request if the stealer more recently received a chunk
This helps break the stealing cycle during endgame, and lets us trickle the request to the peer conn with the best record. It might not be sufficient but works nice in testing so far.
Matt Joiner [Tue, 7 Dec 2021 03:17:43 +0000 (14:17 +1100)]
Only use last requested when both requests are already pending
Matt Joiner [Fri, 10 Dec 2021 07:04:45 +0000 (18:04 +1100)]
Add Torrent-level request cancel for consistency
Matt Joiner [Mon, 6 Dec 2021 08:02:29 +0000 (19:02 +1100)]
Update peer cancel assumptions and return
Matt Joiner [Fri, 3 Dec 2021 10:31:40 +0000 (21:31 +1100)]
Improve panic message
Matt Joiner [Fri, 3 Dec 2021 10:30:41 +0000 (21:30 +1100)]
Try request stealing
Matt Joiner [Fri, 3 Dec 2021 05:41:52 +0000 (16:41 +1100)]
Don't try to request anything without the torrent info
Matt Joiner [Thu, 2 Dec 2021 02:10:02 +0000 (13:10 +1100)]
Wait between duplicate requests
Matt Joiner [Wed, 1 Dec 2021 08:31:29 +0000 (19:31 +1100)]
Stop iterating pieces when storage is exhausted
Matt Joiner [Wed, 1 Dec 2021 08:21:25 +0000 (19:21 +1100)]
Use interfaces to lazily expose the bare minimum inputs to GetRequestablePieces
Matt Joiner [Wed, 1 Dec 2021 04:20:42 +0000 (15:20 +1100)]
Provide mapping from infohash to Torrent in Input
Matt Joiner [Wed, 1 Dec 2021 03:38:47 +0000 (14:38 +1100)]
Implement piece request ordering with retained state
Matt Joiner [Tue, 30 Nov 2021 10:31:32 +0000 (21:31 +1100)]
Avoid reflection sorting request pieces
Matt Joiner [Tue, 30 Nov 2021 04:26:05 +0000 (15:26 +1100)]
Use indices to lookup pieces for comparison
Matt Joiner [Tue, 30 Nov 2021 04:18:38 +0000 (15:18 +1100)]
Cache piece request orderings
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 )
Matt Joiner [Sun, 12 Dec 2021 06:20:02 +0000 (17:20 +1100)]
Revert "Link to godocs.io for documentation"
This reverts commit
c2ed60f9f2d100ddd15a38a6c260121a9ad6e893 .
Matt Joiner [Mon, 29 Nov 2021 02:07:18 +0000 (13:07 +1100)]
Partition piece request strategy by storage capacity key
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.
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.
Matt Joiner [Sat, 11 Dec 2021 02:43:25 +0000 (13:43 +1100)]
Add generalized decodeJsonByteString and a fuzz target for it
Matt Joiner [Fri, 3 Dec 2021 06:15:59 +0000 (17:15 +1100)]
Add failing bencode fuzz input
Matt Joiner [Tue, 7 Dec 2021 03:16:02 +0000 (14:16 +1100)]
Transmission does not reject cancelled requests
Matt Joiner [Mon, 6 Dec 2021 08:24:48 +0000 (19:24 +1100)]
Don't log webseed request context cancellation results
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.
Matt Joiner [Fri, 10 Dec 2021 03:29:35 +0000 (14:29 +1100)]
bencode: Fix decoding integer with leading +
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
Matt Joiner [Fri, 10 Dec 2021 02:36:53 +0000 (13:36 +1100)]
bencode incorrectly parsed integers with leading zeroes
Matt Joiner [Fri, 10 Dec 2021 02:35:57 +0000 (13:35 +1100)]
Add bencode FuzzInterfaceRoundTrip
Matt Joiner [Sun, 12 Dec 2021 05:56:00 +0000 (16:56 +1100)]
Shuffle duplicate requests
Add missing import
Matt Joiner [Wed, 1 Dec 2021 23:50:02 +0000 (10:50 +1100)]
Generate full sintel magnet link in fs test
Matt Joiner [Wed, 1 Dec 2021 23:49:30 +0000 (10:49 +1100)]
Add sintel.torrent
Matt Joiner [Wed, 1 Dec 2021 07:24:17 +0000 (18:24 +1100)]
Fix races using resources on Close
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.
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.
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
Matt Joiner [Mon, 29 Nov 2021 02:46:44 +0000 (13:46 +1100)]
Ensure peerRequests.torrentStrategyInput is set
Yaroslav Kolomiiets [Wed, 8 Dec 2021 13:02:36 +0000 (13:02 +0000)]
PEX: remove workaround for krpc marshaller
Yaroslav Kolomiiets [Wed, 8 Dec 2021 10:16:54 +0000 (10:16 +0000)]
PEX: use new NodeAddr search methods in krpc
Yaroslav Kolomiiets [Mon, 6 Dec 2021 18:46:25 +0000 (18:46 +0000)]
PEX: fluid event log
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.
Matt Joiner [Tue, 7 Dec 2021 01:42:35 +0000 (12:42 +1100)]
Don't fail-fast on go versions
Matt Joiner [Mon, 6 Dec 2021 04:14:59 +0000 (15:14 +1100)]
Handle 503 returns from webseed peer endpoints
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
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.
Matt Joiner [Thu, 2 Dec 2021 02:10:54 +0000 (13:10 +1100)]
Handle cancelled webseed peer requests if they're not active
Matt Joiner [Fri, 3 Dec 2021 10:31:16 +0000 (21:31 +1100)]
Check if Torrent is closed before receiving webseed chunks
Matt Joiner [Fri, 3 Dec 2021 09:36:34 +0000 (20:36 +1100)]
Fix minimum peer extensions error message
Matt Joiner [Mon, 29 Nov 2021 01:12:30 +0000 (12:12 +1100)]
Reduce idle request updates due to choke and unchoke messages
Matt Joiner [Mon, 29 Nov 2021 00:19:54 +0000 (11:19 +1100)]
Merge branch 'udp-tracker-no-dial' into te
Matt Joiner [Sun, 28 Nov 2021 23:14:16 +0000 (10:14 +1100)]
Remove unused peer stuff in request strategy
Matt Joiner [Sun, 28 Nov 2021 23:07:48 +0000 (10:07 +1100)]
Optimize the use of worstConnSlice again
Matt Joiner [Sun, 28 Nov 2021 13:44:24 +0000 (00:44 +1100)]
Optimize Torrent.haveAnyPieces
Matt Joiner [Sun, 28 Nov 2021 11:46:45 +0000 (22:46 +1100)]
Announce to DHT if we want conns, not just peers
Matt Joiner [Sun, 28 Nov 2021 11:37:56 +0000 (22:37 +1100)]
Wanting peers is a subset of wanting conns
Matt Joiner [Sun, 28 Nov 2021 11:40:53 +0000 (22:40 +1100)]
Don't want conns for seeding unless we have a 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
Matt Joiner [Sun, 28 Nov 2021 06:06:10 +0000 (17:06 +1100)]
Abstract worseConn comparisons and add tests
Matt Joiner [Sun, 28 Nov 2021 01:53:18 +0000 (12:53 +1100)]
Rename worst_conns.go
Matt Joiner [Fri, 26 Nov 2021 22:38:58 +0000 (09:38 +1100)]
Merge branch 'bsi-pending-requests' into te
Matt Joiner [Fri, 26 Nov 2021 06:06:13 +0000 (17:06 +1100)]
Use modernc.org/sqlite version that fixes temp dir race
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.
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 .
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.
Matt Joiner [Mon, 22 Nov 2021 21:33:29 +0000 (08:33 +1100)]
Improve logging of UDP tracker packet dispatch error
Matt Joiner [Mon, 22 Nov 2021 21:32:25 +0000 (08:32 +1100)]
Wrap UDP tracker response error
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.
Matt Joiner [Mon, 22 Nov 2021 07:06:27 +0000 (18:06 +1100)]
Doc comments
Matt Joiner [Fri, 19 Nov 2021 09:29:30 +0000 (20:29 +1100)]
Remove CGO build flags for pure-Go squirrel branch
Matt Joiner [Fri, 19 Nov 2021 09:10:07 +0000 (20:10 +1100)]
Use zombiezen branch of squirrel
Matt Joiner [Fri, 19 Nov 2021 05:19:32 +0000 (16:19 +1100)]
gofumpt
Matt Joiner [Fri, 19 Nov 2021 05:18:41 +0000 (16:18 +1100)]
Use zombiezen sqlite for piece completion
Matt Joiner [Fri, 19 Nov 2021 02:02:42 +0000 (13:02 +1100)]
Quote peer extension names to expvar
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.
Matt Joiner [Wed, 17 Nov 2021 03:01:11 +0000 (14:01 +1100)]
Optimize PeerConn.peerHasAllPieces
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.
Matt Joiner [Tue, 16 Nov 2021 07:27:11 +0000 (18:27 +1100)]
Use tagged version of github.com/anacrolix/fuse
Matt Joiner [Tue, 16 Nov 2021 07:20:02 +0000 (18:20 +1100)]
Switch to github.com/anacrolix/fuse
Matt Joiner [Tue, 16 Nov 2021 06:36:48 +0000 (17:36 +1100)]
Remove dependency on and exclude of github.com/willf/bitset
Matt Joiner [Sun, 14 Nov 2021 02:52:05 +0000 (13:52 +1100)]
Provide context to readahead func
Matt Joiner [Wed, 10 Nov 2021 23:24:28 +0000 (10:24 +1100)]
Add Reader.SetReadaheadFunc
Fixes https://github.com/anacrolix/torrent/issues/687.
Matt Joiner [Sun, 14 Nov 2021 03:01:46 +0000 (14:01 +1100)]
Add a comment about not discarding in webseed OK response bodies
Matt Joiner [Fri, 12 Nov 2021 04:58:32 +0000 (15:58 +1100)]
Don't log legitimate non-range requests
Matt Joiner [Fri, 12 Nov 2021 04:18:20 +0000 (15:18 +1100)]
Should fix failing go1.16 CI build
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.
Matt Joiner [Fri, 12 Nov 2021 03:16:14 +0000 (14:16 +1100)]
Pass HTTP Proxy config into webseeding HTTP client
Matt Joiner [Fri, 12 Nov 2021 02:55:43 +0000 (13:55 +1100)]
Remove unused Client.updateRequests
Matt Joiner [Fri, 12 Nov 2021 02:51:58 +0000 (13:51 +1100)]
Boost webseed max requests
Matt Joiner [Fri, 12 Nov 2021 02:41:55 +0000 (13:41 +1100)]
Increment webseed peer piece availability
Matt Joiner [Fri, 12 Nov 2021 02:30:13 +0000 (13:30 +1100)]
Allow non-partial webseed part responses for small files
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.
Matt Joiner [Fri, 12 Nov 2021 01:37:40 +0000 (12:37 +1100)]
Don't use non-directory webseed URLs for multi-file torrents
Matt Joiner [Thu, 11 Nov 2021 23:46:35 +0000 (10:46 +1100)]
Make TorrentSpecFromMetaInfoErr still usable on info error
Matt Joiner [Thu, 11 Nov 2021 23:45:47 +0000 (10:45 +1100)]
Comment that BEP 19 is WebSeeds
Matt Joiner [Thu, 11 Nov 2021 23:37:21 +0000 (10:37 +1100)]
cmd/torrentfs: Add missing envpprof.Stop
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.
Matt Joiner [Mon, 8 Nov 2021 03:47:01 +0000 (14:47 +1100)]
gofumpt
Matt Joiner [Thu, 4 Nov 2021 22:30:25 +0000 (09:30 +1100)]
Improve dht bootstrap stats logging
Matt Joiner [Thu, 4 Nov 2021 09:02:55 +0000 (20:02 +1100)]
cmd/torrent: Add serve subcommand