]> Sergey Matveev's repositories - btrtrc.git/commitdiff
pass TrackerDialContext to webtorrent trackers (#785)
authorRaphaël Thériault <self@raftar.io>
Mon, 14 Nov 2022 08:20:08 +0000 (00:20 -0800)
committerGitHub <noreply@github.com>
Mon, 14 Nov 2022 08:20:08 +0000 (19:20 +1100)
client.go
wstracker.go

index a77aea84b6fe87702a0d1863592d2b19ed0899fa..d0151fda5b9eb743cf07cf3ee68d980d9a18be86 100644 (file)
--- a/client.go
+++ b/client.go
@@ -298,7 +298,8 @@ func NewClient(cfg *ClientConfig) (cl *Client, err error) {
                        }
                        return t.announceRequest(event), nil
                },
-               Proxy: cl.config.HTTPProxy,
+               Proxy:       cl.config.HTTPProxy,
+               DialContext: cl.config.TrackerDialContext,
                OnConn: func(dc datachannel.ReadWriteCloser, dcc webtorrent.DataChannelContext) {
                        cl.lock()
                        defer cl.unlock()
index e8bde8c348c8a7ba36106ed1ae11e8f1f77d9702..4ed5a5999f565c974b8a0bea32f3a2abb67a1ee5 100644 (file)
@@ -1,7 +1,9 @@
 package torrent
 
 import (
+       "context"
        "fmt"
+       "net"
        "net/url"
        "sync"
 
@@ -40,6 +42,7 @@ type websocketTrackers struct {
        mu                 sync.Mutex
        clients            map[string]*refCountedWebtorrentTrackerClient
        Proxy              http.ProxyFunc
+       DialContext        func(ctx context.Context, network, addr string) (net.Conn, error)
 }
 
 func (me *websocketTrackers) Get(url string, infoHash [20]byte) (*webtorrent.TrackerClient, func()) {
@@ -47,7 +50,7 @@ func (me *websocketTrackers) Get(url string, infoHash [20]byte) (*webtorrent.Tra
        defer me.mu.Unlock()
        value, ok := me.clients[url]
        if !ok {
-               dialer := &websocket.Dialer{Proxy: me.Proxy, HandshakeTimeout: websocket.DefaultDialer.HandshakeTimeout}
+               dialer := &websocket.Dialer{Proxy: me.Proxy, NetDialContext: me.DialContext, HandshakeTimeout: websocket.DefaultDialer.HandshakeTimeout}
                value = &refCountedWebtorrentTrackerClient{
                        TrackerClient: webtorrent.TrackerClient{
                                Dialer:             dialer,