From f5ba8be182d106291b40589ca9fe81b27a80cae6 Mon Sep 17 00:00:00 2001 From: Cuong Manh Le Date: Wed, 11 Dec 2024 14:10:55 +0700 Subject: [PATCH] Use ControlD Public DNS when non-available This logic was missed when new initializing OS resolver logic was implemented. While at it, also adding this test case to prevent regression. --- resolver.go | 3 +++ resolver_test.go | 9 ++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/resolver.go b/resolver.go index fd97e48..f3b7a10 100644 --- a/resolver.go +++ b/resolver.go @@ -118,6 +118,9 @@ func initializeOsResolver(servers []string) []string { } else { or.lanServers.Store(&lanNss) } + if len(publicNss) == 0 { + publicNss = append(publicNss, controldPublicDnsWithPort) + } or.publicServers.Store(&publicNss) return slices.Concat(lanNss, publicNss) } diff --git a/resolver_test.go b/resolver_test.go index 0db05f6..e0b5508 100644 --- a/resolver_test.go +++ b/resolver_test.go @@ -167,7 +167,6 @@ func Test_initializeOsResolver(t *testing.T) { initializeOsResolver([]string{lanServer1, lanServer2, wanServer}) p := or.initializedLanServers.Load() assert.NotNil(t, p) - t.Logf("%v - %v", *p, lanServers) assert.True(t, slices.Equal(*p, lanServers)) assert.True(t, slices.Equal(*or.lanServers.Load(), lanServers)) assert.True(t, slices.Equal(*or.publicServers.Load(), publicServers)) @@ -195,4 +194,12 @@ func Test_initializeOsResolver(t *testing.T) { assert.True(t, slices.Equal(*p, lanServers)) assert.True(t, slices.Equal(*or.lanServers.Load(), lanServers)) assert.True(t, slices.Equal(*or.publicServers.Load(), publicServers)) + + // No Public server, ControlD Public DNS will be used. + initializeOsResolver([]string{}) + p = or.initializedLanServers.Load() + assert.NotNil(t, p) + assert.True(t, slices.Equal(*p, lanServers)) + assert.True(t, slices.Equal(*or.lanServers.Load(), lanServers)) + assert.True(t, slices.Equal(*or.publicServers.Load(), []string{controldPublicDnsWithPort})) }