From: Raphaël Thériault Date: Mon, 14 Nov 2022 08:20:08 +0000 (-0800) Subject: pass TrackerDialContext to webtorrent trackers (#785) X-Git-Tag: v1.48.0~20 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=455913c752a9518c5c37d136bb7c72db41fdc6b1;p=btrtrc.git pass TrackerDialContext to webtorrent trackers (#785) --- 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,