]> Sergey Matveev's repositories - btrtrc.git/log
btrtrc.git
2 years agoFix ClientConfig.Logger.SetHandlers being clobbered v1.51.3
Matt Joiner [Wed, 24 May 2023 01:58:57 +0000 (11:58 +1000)]
Fix ClientConfig.Logger.SetHandlers being clobbered

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

2 years agoRemove PEX todo v1.51.2
Matt Joiner [Tue, 23 May 2023 11:25:36 +0000 (21:25 +1000)]
Remove PEX todo

2 years agogo1.19 compatibility
Matt Joiner [Tue, 23 May 2023 10:55:30 +0000 (20:55 +1000)]
go1.19 compatibility

2 years agoInclude holepunch message protocol family in metrics
Matt Joiner [Mon, 22 May 2023 05:28:28 +0000 (15:28 +1000)]
Include holepunch message protocol family in metrics

2 years agoAdd holepunch message fuzzing
Matt Joiner [Mon, 22 May 2023 05:27:06 +0000 (15:27 +1000)]
Add holepunch message fuzzing

2 years agoAdd a bunch of holepunch metrics
Matt Joiner [Sun, 21 May 2023 09:33:10 +0000 (19:33 +1000)]
Add a bunch of holepunch metrics

2 years agoPrint peer ID in ASCII-only
Matt Joiner [Sun, 21 May 2023 09:30:39 +0000 (19:30 +1000)]
Print peer ID in ASCII-only

2 years agoFix panic logging unknown holepunch error code
Matt Joiner [Sun, 21 May 2023 09:29:35 +0000 (19:29 +1000)]
Fix panic logging unknown holepunch error code

2 years agoReport ltep extensions in status output v1.51.1
Matt Joiner [Fri, 19 May 2023 07:10:03 +0000 (17:10 +1000)]
Report ltep extensions in status output

2 years agoMove PeerClientName and PeerExtensionIDs to PeerConn
Matt Joiner [Fri, 19 May 2023 04:41:27 +0000 (14:41 +1000)]
Move PeerClientName and PeerExtensionIDs to PeerConn

2 years agofixes anacrolix/torrent#795 (#807)
Pavel Tatarskiy [Fri, 19 May 2023 04:23:34 +0000 (07:23 +0300)]
fixes anacrolix/torrent#795 (#807)

2 years agoAdd doc comment for Torrent.BytesMissing
Matt Joiner [Fri, 19 May 2023 04:18:24 +0000 (14:18 +1000)]
Add doc comment for Torrent.BytesMissing

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

2 years agoDon't panic if changing interest fills the write buffer v1.51.0
Matt Joiner [Fri, 19 May 2023 04:09:27 +0000 (14:09 +1000)]
Don't panic if changing interest fills the write buffer

This was the old behaviour, years ago. I don't know why it's suddenly being triggered lately.

2 years agoFix TestSeedAfterDownloading when cgo is disabled
Matt Joiner [Fri, 19 May 2023 02:27:16 +0000 (12:27 +1000)]
Fix TestSeedAfterDownloading when cgo is disabled

2 years agoSkip test failures due to Go uTP implementation
Matt Joiner [Fri, 19 May 2023 01:36:29 +0000 (11:36 +1000)]
Skip test failures due to Go uTP implementation

2 years agoRetry some utp tests on failure
Matt Joiner [Fri, 19 May 2023 01:38:11 +0000 (11:38 +1000)]
Retry some utp tests on failure

2 years agoTweak logging
Matt Joiner [Thu, 18 May 2023 11:25:44 +0000 (21:25 +1000)]
Tweak logging

2 years agoIgnore dial rate limits for holepunch connects
Matt Joiner [Thu, 18 May 2023 01:37:46 +0000 (11:37 +1000)]
Ignore dial rate limits for holepunch connects

2 years agoAdd ClientConfig.DialRateLimiter, handle dial rate limiting errors
Matt Joiner [Thu, 18 May 2023 00:41:51 +0000 (10:41 +1000)]
Add ClientConfig.DialRateLimiter, handle dial rate limiting errors

2 years agoDon't start another holepunch rendezvous if we're handling one
Matt Joiner [Thu, 18 May 2023 00:26:00 +0000 (10:26 +1000)]
Don't start another holepunch rendezvous if we're handling one

2 years agoRelax TestTcpSimultaneousOpen
Matt Joiner [Wed, 17 May 2023 23:46:08 +0000 (09:46 +1000)]
Relax TestTcpSimultaneousOpen

2 years agoImprove test assertion for Linux
Matt Joiner [Wed, 17 May 2023 02:43:20 +0000 (12:43 +1000)]
Improve test assertion for Linux

2 years agoSwitch Go CI to go1.20
Matt Joiner [Wed, 17 May 2023 02:26:34 +0000 (12:26 +1000)]
Switch Go CI to go1.20

2 years agoFix overflow in average download rate
Matt Joiner [Wed, 17 May 2023 02:13:16 +0000 (12:13 +1000)]
Fix overflow in average download rate

2 years agoUse netip.AddrPort in PEX code and filter unusable addrs much sooner
Matt Joiner [Tue, 16 May 2023 07:55:53 +0000 (17:55 +1000)]
Use netip.AddrPort in PEX code and filter unusable addrs much sooner

2 years agoInclude PeerConn prefix for log messages
Matt Joiner [Tue, 16 May 2023 06:35:26 +0000 (16:35 +1000)]
Include PeerConn prefix for log messages

2 years agoHandle more PeerRemoteAddr variants when calculating dial addr
Matt Joiner [Tue, 16 May 2023 06:35:03 +0000 (16:35 +1000)]
Handle more PeerRemoteAddr variants when calculating dial addr

This should fix https://github.com/anacrolix/torrent/issues/820.

2 years agogorond test files
Matt Joiner [Fri, 12 May 2023 03:47:47 +0000 (13:47 +1000)]
gorond test files

2 years agoAdd holepunching stats and tests
Matt Joiner [Fri, 12 May 2023 03:47:24 +0000 (13:47 +1000)]
Add holepunching stats and tests

2 years agoAttempt holepunch after initial dial fails
Matt Joiner [Thu, 11 May 2023 03:03:54 +0000 (13:03 +1000)]
Attempt holepunch after initial dial fails

2 years agoRestore using just hex in peer extension expvar
Matt Joiner [Wed, 3 May 2023 10:15:06 +0000 (20:15 +1000)]
Restore using just hex in peer extension expvar

2 years agoInclude count of peer conns in status
Matt Joiner [Wed, 3 May 2023 06:40:51 +0000 (16:40 +1000)]
Include count of peer conns in status

2 years agoDrop peer request alloc reservations when peer is closed
Matt Joiner [Wed, 3 May 2023 06:40:35 +0000 (16:40 +1000)]
Drop peer request alloc reservations when peer is closed

Might fix a goroutine leak.

2 years agoAdd many more extension bit definitions
Matt Joiner [Wed, 3 May 2023 06:40:00 +0000 (16:40 +1000)]
Add many more extension bit definitions

2 years agoAdd stats for connections that only occur due to holepunching
Matt Joiner [Tue, 2 May 2023 12:17:43 +0000 (22:17 +1000)]
Add stats for connections that only occur due to holepunching

2 years agoRemove bad half open count assertion
Matt Joiner [Tue, 2 May 2023 07:10:02 +0000 (17:10 +1000)]
Remove bad half open count assertion

2 years agoAdd Client.Stats with ActiveHalfOpenAttempts
Matt Joiner [Tue, 2 May 2023 07:09:43 +0000 (17:09 +1000)]
Add Client.Stats with ActiveHalfOpenAttempts

2 years agoFix race in TestUtpLocalPortIsReusable
Matt Joiner [Tue, 2 May 2023 07:06:36 +0000 (17:06 +1000)]
Fix race in TestUtpLocalPortIsReusable

2 years agoSupport multiple ongoing half-open attempts
Matt Joiner [Tue, 2 May 2023 03:06:54 +0000 (13:06 +1000)]
Support multiple ongoing half-open attempts

2 years agoAdd internal panicif, check and nestedmaps packages
Matt Joiner [Tue, 2 May 2023 07:47:47 +0000 (17:47 +1000)]
Add internal panicif, check and nestedmaps packages

Fuckit I'm sick of reinventing the wheel.

2 years agoLocate target peer using dial addr when receiving a holepunch rendezvous
Matt Joiner [Mon, 1 May 2023 02:30:06 +0000 (12:30 +1000)]
Locate target peer using dial addr when receiving a holepunch rendezvous

2 years agogo mod tidy
Matt Joiner [Tue, 9 May 2023 05:42:33 +0000 (15:42 +1000)]
go mod tidy

2 years agoDon't dial out TCP from the listen port
Matt Joiner [Sat, 29 Apr 2023 04:53:03 +0000 (14:53 +1000)]
Don't dial out TCP from the listen port

2 years agoAdd test showing that reusing TCP ports isn't a good idea
Matt Joiner [Fri, 28 Apr 2023 11:27:18 +0000 (21:27 +1000)]
Add test showing that reusing TCP ports isn't a good idea

2 years agoDial TCP with the listener's local addr
Matt Joiner [Mon, 1 May 2023 00:15:34 +0000 (10:15 +1000)]
Dial TCP with the listener's local addr

2 years agoPrefer outgoing connections from higher to lower peer IDs
Matt Joiner [Sat, 29 Apr 2023 11:38:41 +0000 (21:38 +1000)]
Prefer outgoing connections from higher to lower peer IDs

I think it may have been wrong all this time.

2 years agoAdd more hole punching NOTES
Matt Joiner [Fri, 28 Apr 2023 00:00:41 +0000 (10:00 +1000)]
Add more hole punching NOTES

2 years agoBreak PeerConn status into more lines and improve pex status
Matt Joiner [Tue, 25 Apr 2023 12:31:16 +0000 (22:31 +1000)]
Break PeerConn status into more lines and improve pex status

2 years agoSet torrent logger default level to debug
Matt Joiner [Tue, 25 Apr 2023 03:39:59 +0000 (13:39 +1000)]
Set torrent logger default level to debug

2 years agoSynchronize holepunch connect messages with existing rendezvous
Matt Joiner [Tue, 9 May 2023 05:45:50 +0000 (15:45 +1000)]
Synchronize holepunch connect messages with existing rendezvous

2 years agoWIP support for ut_holepunch
Matt Joiner [Sun, 23 Apr 2023 01:44:56 +0000 (11:44 +1000)]
WIP support for ut_holepunch

2 years agoOrder peer conn status by peer priority and show webseeds separately
Matt Joiner [Tue, 25 Apr 2023 12:30:45 +0000 (22:30 +1000)]
Order peer conn status by peer priority and show webseeds separately

2 years agoRate limit received PEX messages per connection
Matt Joiner [Tue, 25 Apr 2023 02:18:49 +0000 (12:18 +1000)]
Rate limit received PEX messages per connection

2 years agoMisc debug status, pex conn tracking improvements
Matt Joiner [Mon, 1 May 2023 00:19:24 +0000 (10:19 +1000)]
Misc debug status, pex conn tracking improvements

2 years agoRename prioritized_peers go files
Matt Joiner [Mon, 24 Apr 2023 05:21:57 +0000 (15:21 +1000)]
Rename prioritized_peers go files

2 years agoCamel case requestStrategy package
Matt Joiner [Sat, 22 Apr 2023 06:07:07 +0000 (16:07 +1000)]
Camel case requestStrategy package

2 years agoTry to balance incoming and outgoing conns per torrent
Matt Joiner [Sat, 22 Apr 2023 05:42:13 +0000 (15:42 +1000)]
Try to balance incoming and outgoing conns per torrent

2 years agoDon't log using torrent source as warning for context cancellation v1.50.0
Matt Joiner [Tue, 4 Apr 2023 09:13:14 +0000 (19:13 +1000)]
Don't log using torrent source as warning for context cancellation

This probably occurs because the info was obtained and we don't need to try the source anymore.

2 years agoImport generics as g
Matt Joiner [Tue, 4 Apr 2023 09:12:26 +0000 (19:12 +1000)]
Import generics as g

2 years agoAdd AddTorrentOpts.InfoBytes
Matt Joiner [Tue, 4 Apr 2023 09:12:01 +0000 (19:12 +1000)]
Add AddTorrentOpts.InfoBytes

2 years agoExpose StringAddr
Matt Joiner [Mon, 3 Apr 2023 05:10:54 +0000 (15:10 +1000)]
Expose StringAddr

2 years agobencode: Only use unsafe.String for go>=1.20 v1.49.1
Matt Joiner [Mon, 3 Apr 2023 05:10:38 +0000 (15:10 +1000)]
bencode: Only use unsafe.String for go>=1.20

2 years agobencode: Support parsing strings into bool v1.49.0
Matt Joiner [Sun, 19 Mar 2023 23:50:22 +0000 (10:50 +1100)]
bencode: Support parsing strings into bool

2 years agoAdd Peer.Torrent
Matt Joiner [Wed, 1 Mar 2023 03:17:29 +0000 (14:17 +1100)]
Add Peer.Torrent

This was for accessing from callback events.

2 years agogorond
Matt Joiner [Wed, 1 Mar 2023 01:34:35 +0000 (12:34 +1100)]
gorond

2 years agoFinish moving all Peer types and methods into peer.go
Matt Joiner [Wed, 1 Mar 2023 01:33:25 +0000 (12:33 +1100)]
Finish moving all Peer types and methods into peer.go

2 years agoExpose UDP tracker error response type
Matt Joiner [Fri, 24 Feb 2023 05:20:08 +0000 (16:20 +1100)]
Expose UDP tracker error response type

2 years agoDon't reconnect before sending requests with current conn ID
Matt Joiner [Mon, 20 Feb 2023 04:49:55 +0000 (15:49 +1100)]
Don't reconnect before sending requests with current conn ID

The tracker udp://tracker.torrent.eu.org:451/announce gives `error response: "Connection ID missmatch.\x00"` every 2 minutes when under heavy use. I suspect that reconnect requests are sent just after the connection ID is confirmed as not stale, but before it used for a request, and the server rejects the request after processing the reconnect first.

It might also just be that that tracker server implementation is lazy and marks everything stale on regular boundaries.

2 years agoAdd unit test for relative availability after HaveNone
Matt Joiner [Sun, 19 Feb 2023 02:24:25 +0000 (13:24 +1100)]
Add unit test for relative availability after HaveNone

Could help with https://github.com/anacrolix/torrent/issues/813.

2 years agoAdd http and udp tracker server implementations
Matt Joiner [Sun, 19 Feb 2023 01:08:23 +0000 (12:08 +1100)]
Add http and udp tracker server implementations

2 years agogofumpt
Matt Joiner [Sat, 18 Feb 2023 07:35:22 +0000 (18:35 +1100)]
gofumpt

2 years agoBump golang.org/x/net from 0.5.0 to 0.7.0 (#819)
dependabot[bot] [Sat, 18 Feb 2023 05:06:17 +0000 (16:06 +1100)]
Bump golang.org/x/net from 0.5.0 to 0.7.0 (#819)

Bumps [golang.org/x/net](https://github.com/golang/net) from 0.5.0 to 0.7.0.
- [Release notes](https://github.com/golang/net/releases)
- [Commits](https://github.com/golang/net/compare/v0.5.0...v0.7.0)

---
updated-dependencies:
- dependency-name: golang.org/x/net
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2 years agoLimit peer request data allocation
Matt Joiner [Tue, 14 Feb 2023 01:46:23 +0000 (12:46 +1100)]
Limit peer request data allocation

This follows up from abb5cbc96e301a4ca1f5df698b105ae8553ce1e9. We currently limit how many requests peers can send us, but didn't really check that peers didn't make us allocate huge amounts of space to buffer their requests. I'm sure there's some rough edges here.

2 years agoBump github.com/pion/dtls/v2 from 2.1.5 to 2.2.4 (#814)
dependabot[bot] [Mon, 13 Feb 2023 21:15:15 +0000 (08:15 +1100)]
Bump github.com/pion/dtls/v2 from 2.1.5 to 2.2.4 (#814)

Bumps [github.com/pion/dtls/v2](https://github.com/pion/dtls) from 2.1.5 to 2.2.4.
- [Release notes](https://github.com/pion/dtls/releases)
- [Commits](https://github.com/pion/dtls/compare/v2.1.5...v2.2.4)

---
updated-dependencies:
- dependency-name: github.com/pion/dtls/v2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2 years agoCheck for chunks overflowing piece bounds on request read
Matt Joiner [Mon, 13 Feb 2023 12:27:15 +0000 (23:27 +1100)]
Check for chunks overflowing piece bounds on request read

Test for integer overflow in when checking read requests are within the bounds of the associated piece. Another fix is required to limit the amount of memory that can be allocated for such requests.

2 years agoRemove unecessary completion "set" (#812)
Colin Marc [Mon, 13 Feb 2023 03:26:03 +0000 (04:26 +0100)]
Remove unecessary completion "set" (#812)

If the file has never been downloaded, complete will naturally be false. It's
not necessary to then set it false again unless it was actually claimed to be
true in the first place.

In my tests, using the boltdb completion thingy with fsync turned *on*, this
reduced the cold start for big buck bunny from multiple seconds to just a few
ms.

2 years agoUpdate codeql analysis to v2 (#806)
Spencer Comfort [Mon, 30 Jan 2023 21:41:06 +0000 (16:41 -0500)]
Update codeql analysis to v2 (#806)

Updates the outdated codeql analysis actions to v2

2 years agoRoaring bitmap tests now pass when run from downstream
Matt Joiner [Mon, 23 Jan 2023 21:52:49 +0000 (08:52 +1100)]
Roaring bitmap tests now pass when run from downstream

2 years agoAdd span for udp packet handling
Matt Joiner [Sun, 8 Jan 2023 06:22:02 +0000 (17:22 +1100)]
Add span for udp packet handling

2 years agoForward leechers and seeders announce handler results
Matt Joiner [Wed, 4 Jan 2023 13:05:34 +0000 (00:05 +1100)]
Forward leechers and seeders announce handler results

2 years agoHandle left param for http tracker server announces
Matt Joiner [Wed, 4 Jan 2023 13:04:42 +0000 (00:04 +1100)]
Handle left param for http tracker server announces

2 years agogorond
Matt Joiner [Tue, 3 Jan 2023 14:26:31 +0000 (01:26 +1100)]
gorond

2 years agoAdd a check that piece request order items are scanned in order
Matt Joiner [Tue, 3 Jan 2023 14:25:57 +0000 (01:25 +1100)]
Add a check that piece request order items are scanned in order

It's not clear from btree documentation that scan should be ordered.

2 years agoFix an issue parsing negative bencode string lengths
Matt Joiner [Tue, 3 Jan 2023 14:25:26 +0000 (01:25 +1100)]
Fix an issue parsing negative bencode string lengths

See the fuzz test in dht/krpc.

2 years agoLimit udp tracker server request concurrency
Matt Joiner [Mon, 2 Jan 2023 13:14:21 +0000 (00:14 +1100)]
Limit udp tracker server request concurrency

2 years agoUpdate tidwall/btree
Matt Joiner [Sat, 31 Dec 2022 02:25:00 +0000 (13:25 +1100)]
Update tidwall/btree

2 years agoSleep webseed peers after unhandled errors
Matt Joiner [Sat, 31 Dec 2022 00:27:47 +0000 (11:27 +1100)]
Sleep webseed peers after unhandled errors

2 years agoAssume upstream peers are leechers
Matt Joiner [Thu, 29 Dec 2022 08:42:19 +0000 (19:42 +1100)]
Assume upstream peers are leechers

2 years agoResize packet buffer to avoid wasting memory
Matt Joiner [Thu, 29 Dec 2022 08:41:36 +0000 (19:41 +1100)]
Resize packet buffer to avoid wasting memory

2 years agoAvoid panic in AnnounceEvent.String
Matt Joiner [Thu, 29 Dec 2022 08:41:09 +0000 (19:41 +1100)]
Avoid panic in AnnounceEvent.String

2 years agoFix race when final peers are available early
Matt Joiner [Thu, 29 Dec 2022 08:40:20 +0000 (19:40 +1100)]
Fix race when final peers are available early

2 years agoAdd Context parameter to SendResponse
Matt Joiner [Wed, 28 Dec 2022 23:22:03 +0000 (10:22 +1100)]
Add Context parameter to SendResponse

2 years agoTrack request payload len
Matt Joiner [Wed, 28 Dec 2022 23:21:34 +0000 (10:21 +1100)]
Track request payload len

2 years agoDefault to announcing as leecher v1.48.0
Matt Joiner [Sat, 17 Dec 2022 00:08:46 +0000 (11:08 +1100)]
Default to announcing as leecher

(cherry picked from commit 16da3c0c46a71d6f270600c63acb674226c1c9ae)

2 years agoAdd --port flag to announce
Matt Joiner [Fri, 16 Dec 2022 04:38:30 +0000 (15:38 +1100)]
Add --port flag to announce

(cherry picked from commit e554aa19a691615f349bf6dae0601706ea47dc03)

2 years agoMerge branch 'universal-webseed-escaping'
Matt Joiner [Sun, 25 Dec 2022 08:26:01 +0000 (19:26 +1100)]
Merge branch 'universal-webseed-escaping'

2 years agoFix write error handling
Matt Joiner [Sun, 25 Dec 2022 08:23:07 +0000 (19:23 +1100)]
Fix write error handling

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

Prior to this fix, it looks like the writer would just keep writing chunks of the front buffer (incorrectly if there was an error), until presumably the writer would be killed by read hangup elsewhere.

2 years agoDon't use path.Join in default webseed path escaper
Matt Joiner [Sun, 25 Dec 2022 07:20:42 +0000 (18:20 +1100)]
Don't use path.Join in default webseed path escaper

Thanks fuzzing!

2 years agoAdd fuzzing for webseed path escaping
Matt Joiner [Sun, 25 Dec 2022 07:20:23 +0000 (18:20 +1100)]
Add fuzzing for webseed path escaping

2 years agoChange default webseed path escaping to work for all S3-compatible providers
Matt Joiner [Fri, 23 Dec 2022 00:18:36 +0000 (11:18 +1100)]
Change default webseed path escaping to work for all S3-compatible providers