]> Sergey Matveev's repositories - btrtrc.git/log
btrtrc.git
3 years agoInlineable methods to access File piecePriority (#601)
YenForYang [Mon, 13 Sep 2021 11:17:54 +0000 (06:17 -0500)]
Inlineable methods to access File piecePriority (#601)

3 years agoSimplify (*Torrent).gotMetainfo (#581)
YenForYang [Mon, 13 Sep 2021 01:41:11 +0000 (20:41 -0500)]
Simplify (*Torrent).gotMetainfo (#581)

3 years agoRemove xerrors dependency (#600)
YenForYang [Mon, 13 Sep 2021 01:38:08 +0000 (20:38 -0500)]
Remove xerrors dependency (#600)

* Remove xerrors dependency

* Update main.go

3 years agoReorder fields to reduce padding in reader (#597)
YenForYang [Mon, 13 Sep 2021 01:36:35 +0000 (20:36 -0500)]
Reorder fields to reduce padding in reader (#597)

Reorder some of the fields to reduce the size of `reader`. Not much of a change -- original size was 104 bytes, with changes (moving bool's to the end) the size is 96 bytes. There's also the whole cache-friendly bit -- I tried reordering fields to help here, but I doubt it makes much of a difference.

Some other notes: `sync.Locker` is a 16 byte field. I suggest changing this to something like `*sync.RWMutex` or `*lockWithDeferreds`. This would not only reduce size but would allow access to `RLock`/`RUnlock`.
`pieceRange` could also be shrunk to 8 bytes, but I feel like I'm probably asking for too much lol.

3 years agoUpdate ReadCloser interface check to ReadSeekCloser (#595)
YenForYang [Sun, 12 Sep 2021 04:14:07 +0000 (23:14 -0500)]
Update ReadCloser interface check to ReadSeekCloser (#595)

3 years agoFix http announce of infohash containing ' ' bytes (#591)
Matt Joiner [Sun, 12 Sep 2021 04:11:59 +0000 (14:11 +1000)]
Fix http announce of infohash containing ' ' bytes (#591)

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

3 years agoDon't call Client onClose handlers until torrent storages are closed
Matt Joiner [Fri, 10 Sep 2021 04:15:45 +0000 (14:15 +1000)]
Don't call Client onClose handlers until torrent storages are closed

3 years agoFix Torrent.Drop to wait for storage close without client lock
Matt Joiner [Fri, 10 Sep 2021 04:14:57 +0000 (14:14 +1000)]
Fix Torrent.Drop to wait for storage close without client lock

3 years agoAvoid allocating memory when checking interface (#588)
YenForYang [Fri, 10 Sep 2021 22:26:43 +0000 (17:26 -0500)]
Avoid allocating memory when checking interface (#588)

Not a big deal, but there isn't a need to allocate an object to check that `*Node` satisfies `bencode.Unmarshaler`.

3 years agoOptimize peersForPieces allocations for make and sorting
Matt Joiner [Fri, 10 Sep 2021 13:06:23 +0000 (23:06 +1000)]
Optimize peersForPieces allocations for make and sorting

3 years agoOptimize requesting peerId Uintptr allocation
Matt Joiner [Fri, 10 Sep 2021 13:02:20 +0000 (23:02 +1000)]
Optimize requesting peerId Uintptr allocation

3 years agoDisable ensureValidSortedPeersForPieceRequests
Matt Joiner [Fri, 10 Sep 2021 12:13:39 +0000 (22:13 +1000)]
Disable ensureValidSortedPeersForPieceRequests

Should approximately half the contribution of the parent function to overhead.

3 years agoOptimize sortPeersForPiece in allocatePendingChunks
Matt Joiner [Fri, 10 Sep 2021 12:12:08 +0000 (22:12 +1000)]
Optimize sortPeersForPiece in allocatePendingChunks

3 years agoOptimize Torrent.worstBadConn
Matt Joiner [Fri, 10 Sep 2021 11:48:44 +0000 (21:48 +1000)]
Optimize Torrent.worstBadConn

3 years agoRemove reader.opMu
Matt Joiner [Fri, 10 Sep 2021 10:58:11 +0000 (20:58 +1000)]
Remove reader.opMu

https://github.com/anacrolix/torrent/issues/553

3 years agogo fmt ./...
Matt Joiner [Thu, 9 Sep 2021 12:51:24 +0000 (22:51 +1000)]
go fmt ./...

3 years agoFix possible misuse of reflect.StringHeader
Matt Joiner [Thu, 9 Sep 2021 12:49:22 +0000 (22:49 +1000)]
Fix possible misuse of reflect.StringHeader

3 years agouseTorrentSources: fix http request resource leak (#562)
YenForYang [Thu, 9 Sep 2021 12:39:12 +0000 (07:39 -0500)]
useTorrentSources: fix http request resource leak (#562)

3 years agoClarify ownership of (*Torrent).chunkPool (#583)
YenForYang [Thu, 9 Sep 2021 12:27:16 +0000 (07:27 -0500)]
Clarify ownership of (*Torrent).chunkPool (#583)

Basically bind the lifetime of chunkPool to the torrent by using `sync.Pool` in lieu of `*sync.Pool`. Gives the GC ever so slightly less work to do.

3 years agoDon't readahead until a read occurs
Matt Joiner [Thu, 9 Sep 2021 12:19:29 +0000 (22:19 +1000)]
Don't readahead until a read occurs

3 years agoMake readahead algorithm linear
Matt Joiner [Thu, 9 Sep 2021 12:16:24 +0000 (22:16 +1000)]
Make readahead algorithm linear

3 years agoAdd default sqrt readahead algorithm
Matt Joiner [Thu, 9 Sep 2021 10:55:09 +0000 (20:55 +1000)]
Add default sqrt readahead algorithm

3 years agoExtract common Torrent.newReader
Matt Joiner [Thu, 9 Sep 2021 07:41:12 +0000 (17:41 +1000)]
Extract common Torrent.newReader

3 years agoAdd Webtor to downstream projects
Matt Joiner [Thu, 9 Sep 2021 12:12:29 +0000 (22:12 +1000)]
Add Webtor to downstream projects

3 years agoFix unit tests littering working directory
Matt Joiner [Thu, 9 Sep 2021 02:58:07 +0000 (12:58 +1000)]
Fix unit tests littering working directory

3 years agoUpdate README.md
Matt Joiner [Wed, 8 Sep 2021 03:46:03 +0000 (13:46 +1000)]
Update README.md

3 years agoUpdate README.md
Matt Joiner [Wed, 8 Sep 2021 03:45:25 +0000 (13:45 +1000)]
Update README.md

3 years agoDrop xerrors and missinggo/slices dependency for Client (#572)
YenForYang [Tue, 7 Sep 2021 23:34:06 +0000 (18:34 -0500)]
Drop xerrors and missinggo/slices dependency for Client (#572)

* Drop xerrors and missinggo/slices dependency for Client

Made `BadPeerIPs` inlineable since I changed `badPeerIPsLocked` anyway. Also eliminated an extra torrentsAsSlice copy since Go wasn't smart enough to figure it out.

3 years agoImprove Closing (#559)
Zilog8 [Sun, 5 Sep 2021 01:33:41 +0000 (21:33 -0400)]
Improve Closing (#559)

- Prevent double-closing in cmd/torrent
- Move async closing from storage to torrents, and wait on them to finish tidying up before returning/exiting.

3 years agoUpdate chansync
Matt Joiner [Sat, 4 Sep 2021 13:34:06 +0000 (23:34 +1000)]
Update chansync

3 years agoReturn error on sqlite PieceCompletion.Set when closed
Matt Joiner [Thu, 2 Sep 2021 10:54:22 +0000 (20:54 +1000)]
Return error on sqlite PieceCompletion.Set when closed

3 years agoRework Reader waiting
Matt Joiner [Thu, 2 Sep 2021 10:53:49 +0000 (20:53 +1000)]
Rework Reader waiting

3 years agoSimplify dhtPort()
YenForYang [Sat, 4 Sep 2021 02:24:35 +0000 (21:24 -0500)]
Simplify dhtPort()

A similar case of `haveDhtServer`

3 years agoDrop xerrors and reflection dependency
YenForYang [Sat, 4 Sep 2021 06:30:14 +0000 (01:30 -0500)]
Drop xerrors and reflection dependency

Nothing wrong with missinggo.CopyExact -- but fewer dependencies is better IMO.  Also changed String() to use a consistent receiver name -- not a big deal.

3 years ago[gomod] Update anacrolix/dht and run 'go mod tidy'
afjoseph [Thu, 2 Sep 2021 12:31:09 +0000 (14:31 +0200)]
[gomod] Update anacrolix/dht and run 'go mod tidy'

3 years agoSimplify haveDhtServers()
YenForYang [Fri, 3 Sep 2021 03:03:47 +0000 (22:03 -0500)]
Simplify haveDhtServers()

A bit too much functional programming, lol.

3 years agoMerge branch 'master' into squirrel
Matt Joiner [Thu, 2 Sep 2021 04:19:29 +0000 (14:19 +1000)]
Merge branch 'master' into squirrel

3 years agogo get -u ./...
Matt Joiner [Thu, 2 Sep 2021 00:31:47 +0000 (10:31 +1000)]
go get -u ./...

3 years agoAdd generics TODO v1.31.0
Matt Joiner [Thu, 2 Sep 2021 00:21:56 +0000 (10:21 +1000)]
Add generics TODO

3 years agoAdd "no name" handling and storage.NewFileOpts
Matt Joiner [Thu, 2 Sep 2021 00:21:46 +0000 (10:21 +1000)]
Add "no name" handling and storage.NewFileOpts

This came out of testing against Transmission in https://github.com/anacrolix/torrent/discussions/556#discussioncomment-1263670.

3 years ago./cmd/torrent-create: Update the builtin announce list
Matt Joiner [Wed, 1 Sep 2021 23:28:29 +0000 (09:28 +1000)]
./cmd/torrent-create: Update the builtin announce list

3 years agoFix info name when building from . and ..
Matt Joiner [Wed, 1 Sep 2021 06:17:23 +0000 (16:17 +1000)]
Fix info name when building from . and ..

3 years agocmd/torrent download: Don't seed if no torrents are specified
Matt Joiner [Wed, 1 Sep 2021 05:26:12 +0000 (15:26 +1000)]
cmd/torrent download: Don't seed if no torrents are specified

3 years agoFix panic on double Close of sqlite piece completion DB
Matt Joiner [Wed, 1 Sep 2021 05:25:46 +0000 (15:25 +1000)]
Fix panic on double Close of sqlite piece completion DB

3 years agoPieceStateRuns: reduce copying and make inlineable
YenForYang [Wed, 1 Sep 2021 04:06:25 +0000 (23:06 -0500)]
PieceStateRuns: reduce copying and make inlineable

Just a heads up: using `range` and/or `defer` prevents function inlining. This is fine for infrequently called functions and/or large functions, but for simple public methods like these, I'd assume it's better for them to be inlined.

3 years agoFix some DeepSource lints
Matt Joiner [Mon, 30 Aug 2021 01:48:34 +0000 (11:48 +1000)]
Fix some DeepSource lints

3 years agoSet Go CI workflow to use Go 1.17
Matt Joiner [Mon, 30 Aug 2021 01:19:16 +0000 (11:19 +1000)]
Set Go CI workflow to use Go 1.17

3 years agogo mod tidy
Matt Joiner [Thu, 26 Aug 2021 01:20:52 +0000 (11:20 +1000)]
go mod tidy

3 years agoAdd function to wrap squirrel.Cache as storage.ClientImpl
Matt Joiner [Thu, 26 Aug 2021 01:20:37 +0000 (11:20 +1000)]
Add function to wrap squirrel.Cache as storage.ClientImpl

3 years agoUpdate squirrel
Matt Joiner [Thu, 26 Aug 2021 01:19:39 +0000 (11:19 +1000)]
Update squirrel

3 years agoUse separate squirrel module
Matt Joiner [Wed, 25 Aug 2021 04:37:00 +0000 (14:37 +1000)]
Use separate squirrel module

3 years agoRemoved unused sqlite "provider" storage
Matt Joiner [Wed, 25 Aug 2021 02:35:07 +0000 (12:35 +1000)]
Removed unused sqlite "provider" storage

3 years agoEmbed SQL
Matt Joiner [Tue, 24 Aug 2021 12:24:39 +0000 (22:24 +1000)]
Embed SQL

3 years agoImplement {Set,Get}Tag on SquirrelBlob
Matt Joiner [Tue, 24 Aug 2021 08:37:38 +0000 (18:37 +1000)]
Implement {Set,Get}Tag on SquirrelBlob

3 years agoBegin extracting 'squirrel' from storage/sqlite
Matt Joiner [Tue, 24 Aug 2021 07:52:31 +0000 (17:52 +1000)]
Begin extracting 'squirrel' from storage/sqlite

3 years agoAvoid reallocating keep alive timer on each pass v1.30.4
Matt Joiner [Sun, 22 Aug 2021 10:05:53 +0000 (20:05 +1000)]
Avoid reallocating keep alive timer on each pass

3 years agoDon't run linter on master branch
Matt Joiner [Sun, 22 Aug 2021 06:59:40 +0000 (16:59 +1000)]
Don't run linter on master branch

Super unimpressed with this pedantic rubbish. PRs to adjust the settings welcome.

3 years agoUpdate install command
Matt Joiner [Sun, 22 Aug 2021 05:52:35 +0000 (15:52 +1000)]
Update install command

3 years agoChange linter workflow branches and name v1.30.3
Matt Joiner [Thu, 19 Aug 2021 06:12:28 +0000 (16:12 +1000)]
Change linter workflow branches and name

3 years agoRemove unused code
Matt Joiner [Thu, 19 Aug 2021 06:06:46 +0000 (16:06 +1000)]
Remove unused code

3 years agoUpdate staticcheck go target to 1.16
Matt Joiner [Thu, 19 Aug 2021 06:06:24 +0000 (16:06 +1000)]
Update staticcheck go target to 1.16

3 years agoDisable excessively pedantic linters
Matt Joiner [Thu, 19 Aug 2021 06:05:58 +0000 (16:05 +1000)]
Disable excessively pedantic linters

3 years agoFix data race closing incoming PeerConn
Matt Joiner [Thu, 19 Aug 2021 03:35:52 +0000 (13:35 +1000)]
Fix data race closing incoming PeerConn

3 years agoSet direct sqlite storage conn to nil on close
Matt Joiner [Wed, 18 Aug 2021 06:56:05 +0000 (16:56 +1000)]
Set direct sqlite storage conn to nil on close

This might help catch the reason for SQLITE_MISUSE in getCapacity.

3 years agoRewrite peerConnMsgWriter.run
Matt Joiner [Wed, 18 Aug 2021 06:51:30 +0000 (16:51 +1000)]
Rewrite peerConnMsgWriter.run

3 years agoSet testing keep alive timeout to 1 millisecond
Matt Joiner [Wed, 18 Aug 2021 06:23:51 +0000 (16:23 +1000)]
Set testing keep alive timeout to 1 millisecond

If it's too fast, we get stuck trying to send keep alives rather than actually communicating with the peer.

3 years agoFix deadlock when checking whether to send keep alive
Matt Joiner [Wed, 18 Aug 2021 06:23:04 +0000 (16:23 +1000)]
Fix deadlock when checking whether to send keep alive

3 years agoLimit keep alives for rate limited download test
Matt Joiner [Wed, 18 Aug 2021 04:49:13 +0000 (14:49 +1000)]
Limit keep alives for rate limited download test

3 years agoFix race in assigning keep alive timer
Matt Joiner [Wed, 18 Aug 2021 04:48:25 +0000 (14:48 +1000)]
Fix race in assigning keep alive timer

3 years agoUse different keep alive timeout in tests
Matt Joiner [Wed, 18 Aug 2021 01:27:21 +0000 (11:27 +1000)]
Use different keep alive timeout in tests

Exposes bug found in email discussions resulting from https://github.com/anacrolix/torrent/discussions/547.

3 years agoAdd linter CI (#542)
Bora M. Alper [Mon, 16 Aug 2021 01:11:31 +0000 (04:11 +0300)]
Add linter CI (#542)

* Add linter CI

Signed-off-by: Bora M. Alper <bora@boramalper.org>
* Make gosec CI ignore SHA1 and upload sarif

Signed-off-by: Bora M. Alper <bora@boramalper.org>
* Fix formatting of source files

Signed-off-by: Bora M. Alper <bora@boramalper.org>
* Make go vet ignore unkeyed composite literals and fix other warnings

Signed-off-by: Bora M. Alper <bora@boramalper.org>
* Make staticcheck ignore unused methods and fix other warnings

Signed-off-by: Bora M. Alper <bora@boramalper.org>
* Use golangci-lint

Signed-off-by: Bora M. Alper <bora@boramalper.org>
3 years agoUse roaring.Bitmap directly for completed pieces
Matt Joiner [Mon, 16 Aug 2021 01:07:10 +0000 (11:07 +1000)]
Use roaring.Bitmap directly for completed pieces

Looking at improving the performance around this per https://github.com/anacrolix/torrent/discussions/547#discussion-3522317.

3 years agoSet go 1.17 in go.mod
Matt Joiner [Mon, 16 Aug 2021 00:38:43 +0000 (10:38 +1000)]
Set go 1.17 in go.mod

3 years agogo get -u
Matt Joiner [Mon, 16 Aug 2021 00:37:19 +0000 (10:37 +1000)]
go get -u

3 years agoFix mmap panic on darwin with Go 1.17 v1.30.2
Matt Joiner [Fri, 13 Aug 2021 04:02:37 +0000 (14:02 +1000)]
Fix mmap panic on darwin with Go 1.17

3 years agoDon't panic on int parse failures
Matt Joiner [Thu, 12 Aug 2021 03:46:02 +0000 (13:46 +1000)]
Don't panic on int parse failures

This means for UnmarshalTypeErrors we now include context. There are still some other error types remaining that are thrown up via panic.

3 years agoFix panic unmarshalling bencode dict into unsupported type v1.30.1
Matt Joiner [Thu, 12 Aug 2021 02:16:53 +0000 (12:16 +1000)]
Fix panic unmarshalling bencode dict into unsupported type

3 years agoFix allocation of empty DhtNodes in TorrentSpec
Matt Joiner [Wed, 11 Aug 2021 02:27:00 +0000 (12:27 +1000)]
Fix allocation of empty DhtNodes in TorrentSpec

https://github.com/anacrolix/torrent/pull/536#issuecomment-896392738

3 years agoFix race in sqlite direct storage init v1.30.0
Matt Joiner [Tue, 10 Aug 2021 23:43:40 +0000 (09:43 +1000)]
Fix race in sqlite direct storage init

There's a race between starting the blob flusher and assigning the timer to the storage client.

3 years agoReadme: Add downstream project (#543)
Alfonso Montero [Tue, 10 Aug 2021 01:13:00 +0000 (03:13 +0200)]
Readme: Add downstream project (#543)

3 years agoIncrease request update interval if there's no signalling
Matt Joiner [Sun, 1 Aug 2021 12:52:51 +0000 (22:52 +1000)]
Increase request update interval if there's no signalling

3 years agoMinimize allocations and resizing in request computation
Matt Joiner [Sun, 1 Aug 2021 12:02:40 +0000 (22:02 +1000)]
Minimize allocations and resizing in request computation

3 years agoPrecompute File.DisplayPath
Matt Joiner [Sun, 1 Aug 2021 12:01:24 +0000 (22:01 +1000)]
Precompute File.DisplayPath

This is an optimization for dir lookups in torrentfs.

3 years agocmd/torrentfs: Fix panic on missing info
Matt Joiner [Sun, 1 Aug 2021 11:38:35 +0000 (21:38 +1000)]
cmd/torrentfs: Fix panic on missing info

3 years agoTrim UDP tracker client read allocations v1.29.2
Matt Joiner [Mon, 26 Jul 2021 00:18:24 +0000 (10:18 +1000)]
Trim UDP tracker client read allocations

3 years agoClose torrent storage asynchronously on drop
Matt Joiner [Sat, 17 Jul 2021 09:10:07 +0000 (19:10 +1000)]
Close torrent storage asynchronously on drop

3 years agoAdd debug level to piece hash failure log message
Matt Joiner [Sat, 17 Jul 2021 08:52:41 +0000 (18:52 +1000)]
Add debug level to piece hash failure log message

3 years agoFix go:build directives v1.29.1
Matt Joiner [Wed, 14 Jul 2021 04:35:52 +0000 (14:35 +1000)]
Fix go:build directives

3 years agoRemove unused badges
Matt Joiner [Fri, 2 Jul 2021 04:43:13 +0000 (14:43 +1000)]
Remove unused badges

3 years agoFix race in concurrent connects in UDP tracker v1.29.0
Matt Joiner [Sun, 27 Jun 2021 01:57:11 +0000 (11:57 +1000)]
Fix race in concurrent connects in UDP tracker

3 years agomissinggo go.mod fix (#526)
ucwong [Sat, 26 Jun 2021 00:31:50 +0000 (08:31 +0800)]
missinggo go.mod fix (#526)

3 years agoCheck that udp conn ID age is non-zero
Matt Joiner [Fri, 25 Jun 2021 05:00:39 +0000 (15:00 +1000)]
Check that udp conn ID age is non-zero

3 years agoAdd http tracker AllowKeepAlive
Matt Joiner [Fri, 25 Jun 2021 05:00:09 +0000 (15:00 +1000)]
Add http tracker AllowKeepAlive

3 years agoUpdate and expose default client identifiers
Matt Joiner [Fri, 25 Jun 2021 01:29:59 +0000 (11:29 +1000)]
Update and expose default client identifiers

3 years agoAdd udp tracker scrape support
Matt Joiner [Thu, 24 Jun 2021 04:38:16 +0000 (14:38 +1000)]
Add udp tracker scrape support

3 years agoPull AnnounceOpt into tracker package
Matt Joiner [Thu, 24 Jun 2021 03:10:28 +0000 (13:10 +1000)]
Pull AnnounceOpt into tracker package

3 years agoCancel writer after request
Matt Joiner [Thu, 24 Jun 2021 03:10:18 +0000 (13:10 +1000)]
Cancel writer after request

3 years agoDon't log dispatch errors
Matt Joiner [Thu, 24 Jun 2021 03:10:00 +0000 (13:10 +1000)]
Don't log dispatch errors

3 years agoExtract protocol agnostic tracker Client
Matt Joiner [Thu, 24 Jun 2021 00:39:56 +0000 (10:39 +1000)]
Extract protocol agnostic tracker Client

3 years agoRewrite udp announce to use udp client
Matt Joiner [Wed, 23 Jun 2021 23:53:18 +0000 (09:53 +1000)]
Rewrite udp announce to use udp client