Skip to content

Commit 75ba2de

Browse files
committed
allow NewHandler to be used in windows without ClientConfig error
Signed-off-by: Nino Kodabande <[email protected]>
1 parent b7e8561 commit 75ba2de

File tree

1 file changed

+26
-6
lines changed

1 file changed

+26
-6
lines changed

pkg/hostagent/dns/dns.go

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package dns
55
import (
66
"fmt"
77
"net"
8+
"runtime"
89
"strings"
910

1011
"github.com/lima-vm/lima/pkg/limayaml"
@@ -63,12 +64,31 @@ func newStaticClientConfig(ips []string) (*dns.ClientConfig, error) {
6364
}
6465

6566
func NewHandler(opts HandlerOptions) (dns.Handler, error) {
66-
cc, err := dns.ClientConfigFromFile("/etc/resolv.conf")
67-
if err != nil {
68-
logrus.WithError(err).Warnf("failed to detect system DNS, falling back to %v", defaultFallbackIPs)
69-
cc, err = newStaticClientConfig(defaultFallbackIPs)
70-
if err != nil {
71-
return nil, err
67+
var cc *dns.ClientConfig
68+
var err error
69+
if len(opts.UpstreamServers) == 0 {
70+
if runtime.GOOS != "windows" {
71+
cc, err = dns.ClientConfigFromFile("/etc/resolv.conf")
72+
if err != nil {
73+
logrus.WithError(err).Warnf("failed to detect system DNS, falling back to %v", defaultFallbackIPs)
74+
cc, err = newStaticClientConfig(defaultFallbackIPs)
75+
if err != nil {
76+
return nil, err
77+
}
78+
}
79+
} else {
80+
// For windows, the only fallback addresses are defaultFallbackIPs
81+
// since there is no /etc/resolv.conf
82+
cc, err = newStaticClientConfig(defaultFallbackIPs)
83+
if err != nil {
84+
return nil, err
85+
}
86+
}
87+
} else {
88+
if cc, err = newStaticClientConfig(opts.UpstreamServers); err != nil {
89+
if cc, err = newStaticClientConfig(defaultFallbackIPs); err != nil {
90+
return nil, err
91+
}
7292
}
7393
}
7494
clients := []*dns.Client{

0 commit comments

Comments
 (0)