From 45f827a2c568f512bd8001e46e08e59cd845756e Mon Sep 17 00:00:00 2001 From: Cuong Manh Le Date: Fri, 10 Feb 2023 00:06:32 +0700 Subject: [PATCH] internal/controld: connect to API using ipv4 only Connecting to API using ipv6 sometimes hang at TLS handshake, using ipv4 only so we can fetch the config more reliably. Fixed #53 --- internal/controld/config.go | 2 +- internal/controld/config_test.go | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/internal/controld/config.go b/internal/controld/config.go index db01292..88cfd97 100644 --- a/internal/controld/config.go +++ b/internal/controld/config.go @@ -70,7 +70,7 @@ func FetchResolverConfig(uid string) (*ResolverConfig, error) { req.Header.Add("Content-Type", "application/json") transport := http.DefaultTransport.(*http.Transport).Clone() transport.DialContext = func(ctx context.Context, network, addr string) (net.Conn, error) { - return Dialer.DialContext(ctx, network, addr) + return Dialer.DialContext(ctx, "tcp4", addr) } client := http.Client{ Timeout: 10 * time.Second, diff --git a/internal/controld/config_test.go b/internal/controld/config_test.go index 3c09ed7..cd6ea06 100644 --- a/internal/controld/config_test.go +++ b/internal/controld/config_test.go @@ -6,6 +6,7 @@ import ( "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) const utilityURL = "https://api.controld.com/utility" @@ -24,7 +25,7 @@ func TestFetchResolverConfig(t *testing.T) { t.Run(tc.name, func(t *testing.T) { t.Parallel() got, err := FetchResolverConfig(tc.uid) - assert.False(t, (err != nil) != tc.wantErr) + require.False(t, (err != nil) != tc.wantErr, err) if !tc.wantErr { assert.NotEmpty(t, got.DOH) }