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.
This commit is contained in:
Cuong Manh Le
2024-12-11 14:10:55 +07:00
committed by Cuong Manh Le
parent a9f76322bd
commit f5ba8be182
2 changed files with 11 additions and 1 deletions

View File

@@ -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)
}

View File

@@ -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}))
}