]> Sergey Matveev's repositories - btrtrc.git/commitdiff
* set proxy of websocket tracker to the proxy used by client config
authormartin <yang.ruoqi@outlook.com>
Tue, 14 Dec 2021 15:57:19 +0000 (23:57 +0800)
committerMatt Joiner <anacrolix@gmail.com>
Thu, 16 Dec 2021 05:04:59 +0000 (16:04 +1100)
client.go
webtorrent/tracker_client.go
wstracker.go

index 9d0777e40cb559d0c242c1ac961c358763938b23..a3f55c6f601637d8999b252e036de848e58c3d6f 100644 (file)
--- a/client.go
+++ b/client.go
@@ -298,6 +298,7 @@ func NewClient(cfg *ClientConfig) (cl *Client, err error) {
                        }
                        return t.announceRequest(event), nil
                },
+               Proxy: cl.config.HTTPProxy,
                OnConn: func(dc datachannel.ReadWriteCloser, dcc webtorrent.DataChannelContext) {
                        cl.lock()
                        defer cl.unlock()
index f4136c6094487f2f3230f2d7d83065e54e9f51cb..9f02c7e785f38e7767e86e73f3304eb61a322ef8 100644 (file)
@@ -28,6 +28,7 @@ type TrackerClient struct {
        PeerId             [20]byte
        OnConn             onDataChannelOpen
        Logger             log.Logger
+       Dialer             *websocket.Dialer
 
        mu             sync.Mutex
        cond           sync.Cond
@@ -70,7 +71,7 @@ func (tc *TrackerClient) doWebsocket() error {
        tc.mu.Lock()
        tc.stats.Dials++
        tc.mu.Unlock()
-       c, _, err := websocket.DefaultDialer.Dial(tc.Url, nil)
+       c, _, err := tc.Dialer.Dial(tc.Url, nil)
        if err != nil {
                return fmt.Errorf("dialing tracker: %w", err)
        }
index f93f784a7f3c87c0bdc458d2d5f3fef38b4e29df..396b5aa5f28d0033c5054b2c5b19e2d88da656ad 100644 (file)
@@ -2,11 +2,12 @@ package torrent
 
 import (
        "fmt"
+       "github.com/anacrolix/log"
+       "github.com/anacrolix/torrent/tracker/http"
+       "github.com/gorilla/websocket"
        "net/url"
        "sync"
 
-       "github.com/anacrolix/log"
-
        "github.com/anacrolix/torrent/tracker"
        "github.com/anacrolix/torrent/webtorrent"
        "github.com/pion/datachannel"
@@ -37,6 +38,7 @@ type websocketTrackers struct {
        OnConn             func(datachannel.ReadWriteCloser, webtorrent.DataChannelContext)
        mu                 sync.Mutex
        clients            map[string]*refCountedWebtorrentTrackerClient
+       Proxy              http.ProxyFunc
 }
 
 func (me *websocketTrackers) Get(url string) (*webtorrent.TrackerClient, func()) {
@@ -44,8 +46,10 @@ func (me *websocketTrackers) Get(url string) (*webtorrent.TrackerClient, func())
        defer me.mu.Unlock()
        value, ok := me.clients[url]
        if !ok {
+               dialer := &websocket.Dialer{Proxy: me.Proxy, HandshakeTimeout: websocket.DefaultDialer.HandshakeTimeout}
                value = &refCountedWebtorrentTrackerClient{
                        TrackerClient: webtorrent.TrackerClient{
+                               Dialer:             dialer,
                                Url:                url,
                                GetAnnounceRequest: me.GetAnnounceRequest,
                                PeerId:             me.PeerId,