summaryrefslogtreecommitdiffhomepage
path: root/net/dns/dns_clone.go
diff options
context:
space:
mode:
Diffstat (limited to 'net/dns/dns_clone.go')
-rw-r--r--net/dns/dns_clone.go14
1 files changed, 12 insertions, 2 deletions
diff --git a/net/dns/dns_clone.go b/net/dns/dns_clone.go
index 32765ceb4..760cd514d 100644
--- a/net/dns/dns_clone.go
+++ b/net/dns/dns_clone.go
@@ -33,8 +33,18 @@ func (src *Config) Clone() *Config {
}
if dst.Routes != nil {
dst.Routes = map[dnsname.FQDN][]*dnstype.Resolver{}
- for k := range src.Routes {
- dst.Routes[k] = append([]*dnstype.Resolver{}, src.Routes[k]...)
+ for k, sv := range src.Routes {
+ if sv == nil {
+ continue
+ }
+ dst.Routes[k] = make([]*dnstype.Resolver, len(sv))
+ for i := range sv {
+ if sv[i] == nil {
+ dst.Routes[k][i] = nil
+ } else {
+ dst.Routes[k][i] = sv[i].Clone()
+ }
+ }
}
}
dst.SearchDomains = append(src.SearchDomains[:0:0], src.SearchDomains...)