Commit Graph

62 Commits

Author SHA1 Message Date
Matt Joiner 31bbd435f9
gorond 2023-03-01 12:34:35 +11:00
Matt Joiner 2ae264b6cc
Expose UDP tracker error response type 2023-02-24 16:20:08 +11:00
Matt Joiner 63982c3c80
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.
2023-02-20 15:49:55 +11:00
Matt Joiner 8fe9fb78aa
Add span for udp packet handling 2023-01-08 17:22:02 +11:00
Matt Joiner 6baf8dcb99
Limit udp tracker server request concurrency 2023-01-03 00:14:21 +11:00
Matt Joiner 4f8826483e
Resize packet buffer to avoid wasting memory 2022-12-29 19:41:36 +11:00
Matt Joiner f61085c785
Avoid panic in AnnounceEvent.String 2022-12-29 19:41:09 +11:00
Matt Joiner 7d3d4bc088
Add Context parameter to SendResponse 2022-12-29 10:22:03 +11:00
Matt Joiner 7f3655a14b
Track request payload len 2022-12-29 10:21:34 +11:00
Matt Joiner b06b614845
Make trackerServer package 2022-12-18 10:56:25 +11:00
Matt Joiner 6731a31839
Pass seeders and leechers back in UDP announce 2022-12-17 11:08:35 +11:00
Matt Joiner 16c7621d9e
Set span errors 2022-12-16 13:22:44 +11:00
Matt Joiner 87e64b3088
Propagate announce interval, particularly for UDP 2022-12-15 23:21:08 +11:00
Matt Joiner ab4599b6b8
Add some tracing 2022-12-13 15:28:34 +11:00
Matt Joiner cfe166c745
Don't use AnnounceHandler by value
It needs to share mutex for upstream tracker single flight handling.
2022-12-12 11:23:33 +11:00
Matt Joiner 0a4de1821e
Fix error message for connection ID mismatch 2022-12-08 15:07:14 +11:00
Matt Joiner 5cedf602f2
Make UDP tracker connection ID unsigned
This is more appropriate for logging and its use as a byte blob elsewhere.
2022-12-08 15:06:59 +11:00
Matt Joiner acb09fcf79
Add get peers limits 2022-12-08 14:04:43 +11:00
Matt Joiner c23269d1cc
Support upstream trackers 2022-12-07 10:45:12 +11:00
Matt Joiner 6b5c2fa1b0
Support HTTP tracker server 2022-12-07 10:45:12 +11:00
Matt Joiner eb9c032f2b
Start a UDP server implementation 2022-12-07 10:45:12 +11:00
Matt Joiner 330d23be22
Some tidying in tracker/udp 2022-12-05 12:51:29 +11:00
Matt Joiner bf5a22f345
Add announce --event flag 2022-12-05 12:50:55 +11:00
Matt Joiner 3e0f34934d
gorond ./... 2022-11-15 23:31:27 +11:00
Craig Campbell f120b93e1c
Add ability to set DialContext/ListenPacket for tracker announcements (#760)
This is useful if you want to use a custom dialer to proxy requests via
an external server since the HTTPProxy can only be used with tcp
trackers and not udp.
2022-07-07 15:51:58 +10:00
Matt Joiner fe43ce07c8 Quote UDP tracker response error bodies with %#q 2022-02-20 16:15:45 +11:00
Matt Joiner a324fbfee3 Make use of the lazylog branch of anacrolix/log
This avoids significant allocations and overhead.
2022-01-31 17:22:36 +11:00
Matt Joiner 50fcd908ca tracker/udp.ConnClient: Make logging configurable
Should fix https://github.com/anacrolix/torrent/issues/701#issue-1088130173
2021-12-28 12:05:01 +11:00
Matt Joiner aaec4dbd80 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.
2021-11-23 08:35:45 +11:00
Matt Joiner 615669ecf8 Improve logging of UDP tracker packet dispatch error 2021-11-23 08:33:29 +11:00
Matt Joiner aae32e2a31 Wrap UDP tracker response error 2021-11-23 08:32:25 +11:00
Matt Joiner 6cb65f4ecf 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.
2021-11-22 18:11:09 +11:00
Matt Joiner 8555ab7f21 Doc comments 2021-11-22 18:10:47 +11:00
Bora M. Alper 16176b762e
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>
2021-08-16 11:11:31 +10:00
Matt Joiner 83749028ec Trim UDP tracker client read allocations 2021-07-26 10:18:24 +10:00
Matt Joiner 4fb13a1868 Fix race in concurrent connects in UDP tracker 2021-06-27 11:57:28 +10:00
Matt Joiner 9c81516139 Check that udp conn ID age is non-zero 2021-06-25 15:00:39 +10:00
Matt Joiner d4bf547801 Add udp tracker scrape support 2021-06-24 23:13:35 +10:00
Matt Joiner a3159e6b11 Cancel writer after request 2021-06-24 23:13:35 +10:00
Matt Joiner 4bcf71c729 Don't log dispatch errors 2021-06-24 23:13:35 +10:00
Matt Joiner 98a1423732 Extract protocol agnostic tracker Client 2021-06-24 23:13:35 +10:00
Matt Joiner 101a269873 Rewrite udp announce to use udp client 2021-06-24 23:13:35 +10:00
Matt Joiner 42a2fb445f Rearrange some tracker tests and files 2021-06-22 23:32:27 +10:00
Matt Joiner 333c878d2b Rewrite UDP tracker client 2021-06-22 22:36:43 +10:00
Matt Joiner 5f7ad4c769 Merge all the tracker packages, why would anyone want them separately? 2015-03-27 15:12:15 +11:00
Matt Joiner 842a32ae0c Rewrite import paths for migration from Bitbucket 2015-03-20 16:37:44 +11:00
Matt Joiner b3c4afbe25 Add BEP 41 support 2015-03-12 20:07:10 +11:00
Matt Joiner ba1367536c tracker/udp: Tidy up tests 2014-12-03 12:51:49 -06:00
Matt Joiner c75f79b097 Speed up tests, allow -short for some UDP tracker stuff 2014-12-02 14:23:01 -06:00
Matt Joiner aff0999ddf Skip on errors testing UDP tracker, need to implement a fake server 2014-12-01 14:29:08 -06:00