Deduplicate OSConfig.SearchDomains before SetDNS (#12360)

Rather than do this in each implementation, filter the unified
Config.SearchDomains list before calling into the OSConfig layer.

This ensures that when GetBaseConfig rereads that already written
resolv.conf search line, we don't end up growing the same tailnet
entry multiple times.

Updates #12360

Signed-off-by: Kyle McMartin <jkkm@jkkm.org>
pull/15871/head
Kyle McMartin 7 months ago
parent bd29c4ab40
commit f655b98db6

@ -394,7 +394,18 @@ func (m *Manager) compileConfig(cfg Config) (rcfg resolver.Config, ocfg OSConfig
defaultRoutes = append(defaultRoutes, &dnstype.Resolver{Addr: ip.String()})
}
rcfg.Routes["."] = defaultRoutes
ocfg.SearchDomains = append(ocfg.SearchDomains, baseCfg.SearchDomains...)
seen := map[dnsname.FQDN]bool{}
SearchDomains := append(ocfg.SearchDomains, baseCfg.SearchDomains...)
// deduplicate our list of SearchDomains
ocfg.SearchDomains = []dnsname.FQDN{}
for _, sd := range SearchDomains {
if seen[sd] {
continue
}
ocfg.SearchDomains = append(ocfg.SearchDomains, sd)
seen[sd] = true
}
}
return rcfg, ocfg, nil

Loading…
Cancel
Save