From cc63e762e372fe38d5f6ccdbeaf8116ecadf236d Mon Sep 17 00:00:00 2001 From: 9seconds Date: Thu, 12 Mar 2026 21:47:03 +0100 Subject: [PATCH] Use native dialer for scout --- mtglib/internal/doppel/init.go | 7 ++++++- mtglib/internal/doppel/init_test.go | 4 ++++ mtglib/internal/doppel/scout.go | 5 +++-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/mtglib/internal/doppel/init.go b/mtglib/internal/doppel/init.go index 9baa193..15bcfd8 100644 --- a/mtglib/internal/doppel/init.go +++ b/mtglib/internal/doppel/init.go @@ -2,6 +2,7 @@ package doppel import ( "context" + "net" "net/http" "time" @@ -28,11 +29,15 @@ type Network interface { // Dial establishes context-free TCP connections. Dial(network, address string) (essentials.Conn, error) - // DialContext dials using a context. This is a preferrable way of + // DialContext dials using a context. This is a preferable way of // establishing TCP connections. DialContext(ctx context.Context, network, address string) (essentials.Conn, error) // MakeHTTPClient build an HTTP client with given dial function. If nothing is // provided, then DialContext of this interface is going to be used. MakeHTTPClient(func(ctx context.Context, network, address string) (essentials.Conn, error)) *http.Client + + // NativeDialer returns a configured instance of native dialer that + // skips proxy connections or any other irrelevant settings. + NativeDialer() *net.Dialer } diff --git a/mtglib/internal/doppel/init_test.go b/mtglib/internal/doppel/init_test.go index 8723959..7f8fc98 100644 --- a/mtglib/internal/doppel/init_test.go +++ b/mtglib/internal/doppel/init_test.go @@ -30,6 +30,10 @@ func (s SimpleNetwork) DialContext(ctx context.Context, network, address string) return conn.(*net.TCPConn), nil } +func (s SimpleNetwork) NativeDialer() *net.Dialer { + return &net.Dialer{} +} + func (s SimpleNetwork) MakeHTTPClient(dialFunc func(ctx context.Context, network, address string) (essentials.Conn, error)) *http.Client { if dialFunc == nil { dialFunc = s.DialContext diff --git a/mtglib/internal/doppel/scout.go b/mtglib/internal/doppel/scout.go index 88a478b..e6650c8 100644 --- a/mtglib/internal/doppel/scout.go +++ b/mtglib/internal/doppel/scout.go @@ -79,18 +79,19 @@ func (s Scout) learn(ctx context.Context, url string) ([]time.Duration, error) { } func (s Scout) makeClient() (*http.Client, *ScoutConnCollected) { + dialer := s.network.NativeDialer() collected := NewScoutConnCollected() client := s.network.MakeHTTPClient(func( ctx context.Context, network string, address string, ) (essentials.Conn, error) { - conn, err := s.network.DialContext(ctx, network, address) + conn, err := dialer.DialContext(ctx, network, address) if err != nil { return nil, err } - return NewScoutConn(conn, collected), nil + return NewScoutConn(essentials.WrapNetConn(conn), collected), nil }) return client, collected