From 073af0f89c4c627a78dd6e58c2d1953e2e6ad492 Mon Sep 17 00:00:00 2001 From: Cuong Manh Le Date: Thu, 24 Aug 2023 11:13:25 +0000 Subject: [PATCH] Always use ctrld bootstrap nameserver for ResolverTypeOS So in case no nameservers can be found, default OS resolver could still resolve queries. --- resolver.go | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/resolver.go b/resolver.go index d2586ec..aa6bdb7 100644 --- a/resolver.go +++ b/resolver.go @@ -27,13 +27,15 @@ const ( ) var bootstrapDNS = "76.76.2.0" -var or = &osResolver{nameservers: nameservers()} -func init() { - if len(or.nameservers) == 0 { - // Add bootstrap DNS in case we did not find any. - or.nameservers = []string{net.JoinHostPort(bootstrapDNS, "53")} - } +// or is the Resolver used for ResolverTypeOS. +var or = &osResolver{nameservers: defaultNameservers()} + +// defaultNameservers returns OS nameservers plus ctrld bootstrap nameserver. +func defaultNameservers() []string { + ns := nameservers() + ns = append(ns, net.JoinHostPort(bootstrapDNS, "53")) + return ns } // Resolver is the interface that wraps the basic DNS operations.