}
return t.announceRequest(event), nil
},
+ Proxy: cl.config.HTTPProxy,
OnConn: func(dc datachannel.ReadWriteCloser, dcc webtorrent.DataChannelContext) {
cl.lock()
defer cl.unlock()
PeerId [20]byte
OnConn onDataChannelOpen
Logger log.Logger
+ Dialer *websocket.Dialer
mu sync.Mutex
cond sync.Cond
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)
}
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"
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()) {
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,