From 455913c752a9518c5c37d136bb7c72db41fdc6b1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rapha=C3=ABl=20Th=C3=A9riault?= Date: Mon, 14 Nov 2022 00:20:08 -0800 Subject: [PATCH] pass TrackerDialContext to webtorrent trackers (#785) --- client.go | 3 ++- wstracker.go | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/client.go b/client.go index a77aea84..d0151fda 100644 --- 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() diff --git a/wstracker.go b/wstracker.go index e8bde8c3..4ed5a599 100644 --- a/wstracker.go +++ b/wstracker.go @@ -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, -- 2.48.1