]> Sergey Matveev's repositories - btrtrc.git/log
btrtrc.git
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

2 years agoupdate deps (#794)
a [Thu, 22 Dec 2022 00:07:40 +0000 (18:07 -0600)]
update deps (#794)

2 years agoMake trackerServer package
Matt Joiner [Sat, 17 Dec 2022 23:56:25 +0000 (10:56 +1100)]
Make trackerServer package

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

2 years agoPass seeders and leechers back in UDP announce
Matt Joiner [Sat, 17 Dec 2022 00:08:35 +0000 (11:08 +1100)]
Pass seeders and leechers back in UDP announce

2 years agoUse port from announce request, not packet source
Matt Joiner [Fri, 16 Dec 2022 04:39:02 +0000 (15:39 +1100)]
Use port from announce request, not packet source

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

2 years agoSet span errors
Matt Joiner [Fri, 16 Dec 2022 02:22:44 +0000 (13:22 +1100)]
Set span errors

2 years agoPropagate announce interval, particularly for UDP
Matt Joiner [Thu, 15 Dec 2022 12:21:08 +0000 (23:21 +1100)]
Propagate announce interval, particularly for UDP

2 years agoAdd upstream announce gating
Matt Joiner [Tue, 13 Dec 2022 05:41:08 +0000 (16:41 +1100)]
Add upstream announce gating

2 years agoAdd some tracing
Matt Joiner [Tue, 13 Dec 2022 04:28:34 +0000 (15:28 +1100)]
Add some tracing

2 years agoDon't use AnnounceHandler by value
Matt Joiner [Mon, 12 Dec 2022 00:23:33 +0000 (11:23 +1100)]
Don't use AnnounceHandler by value

It needs to share mutex for upstream tracker single flight handling.

2 years agoValidate received chunks before conversion to indexes
Matt Joiner [Sun, 11 Dec 2022 04:21:23 +0000 (15:21 +1100)]
Validate received chunks before conversion to indexes

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

2 years agoFix error message for connection ID mismatch
Matt Joiner [Thu, 8 Dec 2022 04:07:14 +0000 (15:07 +1100)]
Fix error message for connection ID mismatch

2 years agoMake UDP tracker connection ID unsigned
Matt Joiner [Thu, 8 Dec 2022 04:06:59 +0000 (15:06 +1100)]
Make UDP tracker connection ID unsigned

This is more appropriate for logging and its use as a byte blob elsewhere.

2 years agoUse ConnectionId type alias
Matt Joiner [Thu, 8 Dec 2022 04:06:05 +0000 (15:06 +1100)]
Use ConnectionId type alias

2 years agoAdd get peers limits
Matt Joiner [Thu, 8 Dec 2022 03:04:23 +0000 (14:04 +1100)]
Add get peers limits

2 years agoUse smaller parameter type
Matt Joiner [Thu, 8 Dec 2022 03:04:42 +0000 (14:04 +1100)]
Use smaller parameter type

2 years agoFix goroutine leak when augmenting peers from upstream
Matt Joiner [Thu, 8 Dec 2022 02:39:58 +0000 (13:39 +1100)]
Fix goroutine leak when augmenting peers from upstream

2 years agoAdd customer headers when dialling WS connection to tracker (#789)
Marco Vidonis [Wed, 7 Dec 2022 22:17:33 +0000 (22:17 +0000)]
Add customer headers when dialling WS connection to tracker (#789)

* expose WebtorrentTrackerHttpHeader field

2 years agoFix missing log argument
Matt Joiner [Tue, 6 Dec 2022 23:43:45 +0000 (10:43 +1100)]
Fix missing log argument

2 years agoRework logging
Matt Joiner [Tue, 6 Dec 2022 23:43:33 +0000 (10:43 +1100)]
Rework logging

2 years agoSupport upstream trackers
Matt Joiner [Tue, 6 Dec 2022 14:54:38 +0000 (01:54 +1100)]
Support upstream trackers

2 years agoSupport alternate remote host resolution
Matt Joiner [Tue, 6 Dec 2022 04:59:06 +0000 (15:59 +1100)]
Support alternate remote host resolution

2 years agoSupport HTTP tracker server
Matt Joiner [Mon, 5 Dec 2022 06:52:03 +0000 (17:52 +1100)]
Support HTTP tracker server

2 years agoStart a UDP server implementation
Matt Joiner [Mon, 5 Dec 2022 01:52:19 +0000 (12:52 +1100)]
Start a UDP server implementation

2 years agoGroup Client DHT and tracker config
Matt Joiner [Tue, 6 Dec 2022 23:42:29 +0000 (10:42 +1100)]
Group Client DHT and tracker config

2 years agoSupport marshalling http tracker response peers
Matt Joiner [Mon, 5 Dec 2022 06:53:36 +0000 (17:53 +1100)]
Support marshalling http tracker response peers

2 years agoRename tracker/http package
Matt Joiner [Mon, 5 Dec 2022 06:50:39 +0000 (17:50 +1100)]
Rename tracker/http package

2 years agoNew go fmt on doc comments
Matt Joiner [Mon, 5 Dec 2022 06:49:27 +0000 (17:49 +1100)]
New go fmt on doc comments

2 years agoSome tidying in tracker/udp
Matt Joiner [Mon, 5 Dec 2022 01:51:29 +0000 (12:51 +1100)]
Some tidying in tracker/udp

2 years agoAdd announce --event flag
Matt Joiner [Mon, 5 Dec 2022 01:50:40 +0000 (12:50 +1100)]
Add announce --event flag

2 years agoWrap error returned from tracker HTTP request director
Matt Joiner [Mon, 28 Nov 2022 23:42:32 +0000 (10:42 +1100)]
Wrap error returned from tracker HTTP request director

2 years agoRename some HTTP identifiers to Http
Matt Joiner [Mon, 28 Nov 2022 23:44:46 +0000 (10:44 +1100)]
Rename some HTTP identifiers to Http

I believe the Go convention on this is bad, and this names them inline with the style used elsewhere in anacrolix/torrent with Ip for example.

Unfortunately it's pretty widespread, so I've only changed the recent additions.

2 years agoModify HTTP request before sending (#787)
Marco Vidonis [Mon, 28 Nov 2022 23:35:36 +0000 (23:35 +0000)]
Modify HTTP request before sending (#787)

* set up custom request headers

* apply headers defined in torrent client config

* add error handling

* provide better name for method

* update error message

* only apply HTTPRequestDirector if not nil

2 years agoFix godo use in torrentfs CI
Matt Joiner [Mon, 28 Nov 2022 23:29:50 +0000 (10:29 +1100)]
Fix godo use in torrentfs CI

2 years agoMetadata size handling and DHT logging noise
Matt Joiner [Wed, 23 Nov 2022 23:33:06 +0000 (10:33 +1100)]
Metadata size handling and DHT logging noise

2 years agogorond ./...
Matt Joiner [Tue, 15 Nov 2022 12:22:10 +0000 (23:22 +1100)]
gorond ./...

2 years agoMove a bunch of stuff into subpackages
Matt Joiner [Wed, 2 Nov 2022 12:03:25 +0000 (23:03 +1100)]
Move a bunch of stuff into subpackages

The core package is very large now, and often only parts of it are needed.

2 years agopass TrackerDialContext to webtorrent trackers (#785)
Raphaël Thériault [Mon, 14 Nov 2022 08:20:08 +0000 (00:20 -0800)]
pass TrackerDialContext to webtorrent trackers (#785)

2 years agosupport providing a DialContext for the http client (#786)
Raphaël Thériault [Mon, 14 Nov 2022 08:19:02 +0000 (00:19 -0800)]
support providing a DialContext for the http client (#786)

2 years agoRetrive file via HTTP URL in `metainfo.go` (#778)
pk [Mon, 26 Sep 2022 00:01:51 +0000 (19:01 -0500)]
Retrive file via HTTP URL in `metainfo.go` (#778)

2 years agoRun default DHT with table maintainer
Matt Joiner [Fri, 23 Sep 2022 13:29:19 +0000 (23:29 +1000)]
Run default DHT with table maintainer

2 years agoUpdate github.com/anacrolix/dht/v2 v1.47.0
Matt Joiner [Sun, 18 Sep 2022 01:26:58 +0000 (11:26 +1000)]
Update github.com/anacrolix/dht/v2

2 years agoMerge branch 'webrtc-conn-leak'
Matt Joiner [Wed, 31 Aug 2022 01:09:47 +0000 (11:09 +1000)]
Merge branch 'webrtc-conn-leak'

2 years agoMerge branch 'bargle'
Matt Joiner [Wed, 31 Aug 2022 01:06:00 +0000 (11:06 +1000)]
Merge branch 'bargle'

2 years agoWin limit amount of peers per udp packet (#771)
Alex Sharov [Mon, 8 Aug 2022 05:38:19 +0000 (12:38 +0700)]
Win limit amount of peers per udp packet (#771)

2 years agouse rLock where can, part2 (#767)
Alex Sharov [Wed, 13 Jul 2022 10:04:03 +0000 (17:04 +0700)]
use rLock where can, part2 (#767)

2 years agouse RLock where can (#766)
Alex Sharov [Wed, 13 Jul 2022 10:03:42 +0000 (17:03 +0700)]
use RLock where can (#766)

2 years agocmd/torrent: Restore the announce and bencode subcommands
Matt Joiner [Wed, 13 Jul 2022 01:34:02 +0000 (11:34 +1000)]
cmd/torrent: Restore the announce and bencode subcommands

2 years agoClose data channel on offer init errors
Matt Joiner [Tue, 12 Jul 2022 01:46:03 +0000 (11:46 +1000)]
Close data channel on offer init errors

2 years agoAlso close created data channels when cleaning up webrtc conns
Matt Joiner [Tue, 12 Jul 2022 00:42:35 +0000 (10:42 +1000)]
Also close created data channels when cleaning up webrtc conns

2 years agoSupport announcing to webtorrent trackers without offers
Matt Joiner [Mon, 11 Jul 2022 05:01:30 +0000 (15:01 +1000)]
Support announcing to webtorrent trackers without offers

2 years agowebtorrent: Create data channel earlier per webrtc examples
Matt Joiner [Mon, 11 Jul 2022 01:39:54 +0000 (11:39 +1000)]
webtorrent: Create data channel earlier per webrtc examples

2 years agoTrace some webrtcNetConn use
Matt Joiner [Mon, 11 Jul 2022 01:38:06 +0000 (11:38 +1000)]
Trace some webrtcNetConn use

2 years agocmd/torrent: Time and log TracerProvider.Shutdown
Matt Joiner [Mon, 11 Jul 2022 01:37:14 +0000 (11:37 +1000)]
cmd/torrent: Time and log TracerProvider.Shutdown

2 years agoClose detached data channel and end span on webrtc conn close
Matt Joiner [Sat, 9 Jul 2022 07:54:08 +0000 (17:54 +1000)]
Close detached data channel and end span on webrtc conn close

2 years agocmd/torrent: Use tracing SDK
Matt Joiner [Sat, 9 Jul 2022 04:03:34 +0000 (14:03 +1000)]
cmd/torrent: Use tracing SDK

2 years agoAdd tracing to webtorrent webrtc resources
Matt Joiner [Tue, 12 Jul 2022 06:05:19 +0000 (16:05 +1000)]
Add tracing to webtorrent webrtc resources

2 years agocmd/torrent serve: Support multiple file paths
Matt Joiner [Sun, 3 Jul 2022 11:46:28 +0000 (21:46 +1000)]
cmd/torrent serve: Support multiple file paths

2 years agocmd/torrent create: Add piece length and private options
Matt Joiner [Sat, 9 Jul 2022 04:06:27 +0000 (14:06 +1000)]
cmd/torrent create: Add piece length and private options

2 years agoRestore torrent metainfo pprint
Matt Joiner [Mon, 27 Jun 2022 09:24:43 +0000 (19:24 +1000)]
Restore torrent metainfo pprint