Commit Graph

170 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 48b3e66c76
Add http and udp tracker server implementations 2023-02-19 12:08:23 +11:00
Matt Joiner e8b04c7181
gofumpt 2023-02-18 18:35:22 +11:00
Matt Joiner 8fe9fb78aa
Add span for udp packet handling 2023-01-08 17:22:02 +11:00
Matt Joiner 1eb923c947
Forward leechers and seeders announce handler results 2023-01-05 00:05:34 +11:00
Matt Joiner 2dfb57f3f7
Handle left param for http tracker server announces 2023-01-05 00:04:42 +11:00
Matt Joiner 6baf8dcb99
Limit udp tracker server request concurrency 2023-01-03 00:14:21 +11:00
Matt Joiner f38629d354
Assume upstream peers are leechers 2022-12-29 19:42:19 +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 5f127343b0
Fix race when final peers are available early 2022-12-29 19:40:20 +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 3371522119
Use port from announce request, not packet source 2022-12-16 15:39:02 +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 cbea87aaf3
Add upstream announce gating 2022-12-13 16:41: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 91bde5fdf0
Use ConnectionId type alias 2022-12-08 15:06:05 +11:00
Matt Joiner acb09fcf79
Add get peers limits 2022-12-08 14:04:43 +11:00
Matt Joiner 1028161833
Use smaller parameter type 2022-12-08 14:04:42 +11:00
Matt Joiner e5f00e9a82
Fix goroutine leak when augmenting peers from upstream 2022-12-08 13:39:58 +11:00
Matt Joiner 26c226f88f
Fix missing log argument 2022-12-07 10:45:13 +11:00
Matt Joiner 68dc90a7f7
Rework logging 2022-12-07 10:45:12 +11:00
Matt Joiner c23269d1cc
Support upstream trackers 2022-12-07 10:45:12 +11:00
Matt Joiner 425a91c921
Support alternate remote host resolution 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 98d5a19d50
Support marshalling http tracker response peers 2022-12-07 10:44:26 +11:00
Matt Joiner b81423c101
Rename tracker/http package 2022-12-07 10:44: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 17058f76f7
Wrap error returned from tracker HTTP request director 2022-11-29 10:45:38 +11:00
Matt Joiner 3d49eec03a
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.
2022-11-29 10:45:38 +11:00
Marco Vidonis 916af6e38a
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
2022-11-29 10:35:36 +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 30a5d079be Quote http tracker error response body 2022-03-02 10:49:55 +11: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
Preston b831060d6e
fix http tracker arg position (#700)
Co-authored-by: Bot Git <bot@example.com>
2021-12-23 12:34:16 +11:00
Matt Joiner 8764456d23 bencode: Enforce dict key ordering
Fix bencode dict key ordering in HTTP tracker test
2021-12-12 16:56:01 +11:00