mirror of
https://github.com/shtorm-7/sing-box-extended.git
synced 2026-08-11 12:57:13 +03:00
tailscale: Match bare hostnames in preferred_by when search domains exist
MagicDNS resolves single-label names via tailnet search domains, so route preferred_by should treat them as tailscale domains, matching official client behavior.
This commit is contained in:
@@ -98,6 +98,7 @@ type Endpoint struct {
|
||||
routerCfg *router.Config
|
||||
dnsCfg *tsDNS.Config
|
||||
routeDomains common.TypedValue[map[string]bool]
|
||||
searchDomains atomic.Bool
|
||||
routePrefixes atomic.Pointer[netipx.IPSet]
|
||||
|
||||
acceptRoutes bool
|
||||
@@ -785,7 +786,11 @@ func (t *Endpoint) PreferredDomain(domain string) bool {
|
||||
if routeDomains == nil {
|
||||
return false
|
||||
}
|
||||
return routeDomains[strings.ToLower(domain)]
|
||||
domain = strings.ToLower(domain)
|
||||
if routeDomains[domain] {
|
||||
return true
|
||||
}
|
||||
return !strings.Contains(domain, ".") && t.searchDomains.Load()
|
||||
}
|
||||
|
||||
func (t *Endpoint) PreferredAddress(address netip.Addr) bool {
|
||||
@@ -830,6 +835,7 @@ func (t *Endpoint) onReconfig(cfg *wgcfg.Config, routerCfg *router.Config, dnsCf
|
||||
routeDomains[fqdn.WithoutTrailingDot()] = true
|
||||
}
|
||||
t.routeDomains.Store(routeDomains)
|
||||
t.searchDomains.Store(len(dnsCfg.SearchDomains) > 0)
|
||||
|
||||
var builder netipx.IPSetBuilder
|
||||
for _, peer := range cfg.Peers {
|
||||
|
||||
Reference in New Issue
Block a user