summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGreg Steuck <greg@matx.com>2026-03-25 10:19:02 -0700
committerGitHub <noreply@github.com>2026-03-25 10:19:02 -0700
commit954a2dfd31d345615b633771abe9b76defe2b2b3 (patch)
tree8467be2f8d6c485b82f77bb1432bf6e2fae902f0
parent4f43ad3042103e4c2f5a4ac75d555b0d1e7119a9 (diff)
downloadtailscale-954a2dfd31d345615b633771abe9b76defe2b2b3.tar.xz
tailscale-954a2dfd31d345615b633771abe9b76defe2b2b3.zip
net/dns: fix duplicate search line entries (OpenBSD, primarily)
Fixes #12360 Signed-off-by: Greg Steuck <greg@nest.cx>
-rw-r--r--net/dns/manager.go9
1 files changed, 8 insertions, 1 deletions
diff --git a/net/dns/manager.go b/net/dns/manager.go
index 889c542cf..8daa13cbc 100644
--- a/net/dns/manager.go
+++ b/net/dns/manager.go
@@ -431,7 +431,14 @@ 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...)
+ // Append base config search domains, but only if not already present.
+ // This prevents duplicates when GetBaseConfig() reads back domains that
+ // Tailscale itself previously wrote to resolv.conf.
+ for _, domain := range baseCfg.SearchDomains {
+ if !slices.Contains(ocfg.SearchDomains, domain) {
+ ocfg.SearchDomains = append(ocfg.SearchDomains, domain)
+ }
+ }
}
return rcfg, ocfg, nil