support providing a DialContext for the http client (#786)

This commit is contained in:
Raphaël Thériault 2022-11-14 00:19:02 -08:00 committed by GitHub
parent de4c16bbe9
commit 8e53dbaeb8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 1 deletions

View File

@ -203,7 +203,8 @@ func (cl *Client) init(cfg *ClientConfig) {
cl.ipBlockList = cfg.IPBlocklist
cl.httpClient = &http.Client{
Transport: &http.Transport{
Proxy: cfg.HTTPProxy,
Proxy: cfg.HTTPProxy,
DialContext: cfg.HTTPDialContext,
// I think this value was observed from some webseeds. It seems reasonable to extend it
// to other uses of HTTP from the client.
MaxConnsPerHost: 10,

View File

@ -91,6 +91,8 @@ type ClientConfig struct {
// Defines proxy for HTTP requests, such as for trackers. It's commonly set from the result of
// "net/http".ProxyURL(HTTPProxy).
HTTPProxy func(*http.Request) (*url.URL, error)
// Defines DialContext func to use for HTTP requests, such as for fetching metainfo and webtorrent seeds
HTTPDialContext func(ctx context.Context, network, addr string) (net.Conn, error)
// Defines DialContext func to use for HTTP tracker announcements
TrackerDialContext func(ctx context.Context, network, addr string) (net.Conn, error)
// Defines ListenPacket func to use for UDP tracker announcements