| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- package network
-
- import (
- "context"
- "errors"
- "net"
- "testing"
- "time"
- )
-
- // Regression test for https://github.com/9seconds/mtg/issues/439: the dialer
- // used to reach a SOCKS upstream must not inherit the user-supplied DoT/DoH
- // resolver, otherwise internal names (docker compose, k8s, /etc/hosts) fail
- // to resolve through a public resolver that does not know them.
- func TestProxyServerDialerDropsCustomResolver(t *testing.T) {
- customResolver := &net.Resolver{
- PreferGo: true,
- Dial: func(_ context.Context, _, _ string) (net.Conn, error) {
- return nil, errors.New("custom resolver must not be queried for SOCKS upstream")
- },
- }
-
- base := New(
- customResolver,
- "mtg-test",
- 7*time.Second,
- 0,
- 0,
- DefaultKeepAliveConfig,
- )
-
- if base.NativeDialer().Resolver != customResolver {
- t.Fatalf("base.NativeDialer().Resolver = %v, want custom resolver", base.NativeDialer().Resolver)
- }
-
- d := proxyServerDialer(base)
-
- if d.Resolver != nil {
- t.Errorf("proxyServerDialer().Resolver = %v, want nil (must use OS resolver)", d.Resolver)
- }
-
- if d.Timeout != base.NativeDialer().Timeout {
- t.Errorf("proxyServerDialer().Timeout = %v, want %v", d.Timeout, base.NativeDialer().Timeout)
- }
-
- if d.FallbackDelay != base.NativeDialer().FallbackDelay {
- t.Errorf("proxyServerDialer().FallbackDelay = %v, want %v", d.FallbackDelay, base.NativeDialer().FallbackDelay)
- }
- }
|