From 0a6708f865fc6e8c89e0fe9ecf75aea4b617b7ec Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Tue, 7 May 2019 09:27:01 +0200 Subject: conf: retry DNS resoluion when no internet present Signed-off-by: Jason A. Donenfeld --- conf/writer.go | 27 ++++++--------------------- 1 file changed, 6 insertions(+), 21 deletions(-) (limited to 'conf/writer.go') diff --git a/conf/writer.go b/conf/writer.go index 642d14a7..d9504178 100644 --- a/conf/writer.go +++ b/conf/writer.go @@ -6,9 +6,7 @@ package conf import ( - "errors" "fmt" - "net" "strings" ) @@ -70,7 +68,7 @@ func (conf *Config) ToWgQuick() string { return output.String() } -func (conf *Config) ToUAPI() (string, error) { +func (conf *Config) ToUAPI() (uapi string, dnsErr error) { var output strings.Builder output.WriteString(fmt.Sprintf("private_key=%s\n", conf.Interface.PrivateKey.HexString())) @@ -90,25 +88,12 @@ func (conf *Config) ToUAPI() (string, error) { } if !peer.Endpoint.IsEmpty() { - ips, err := net.LookupIP(peer.Endpoint.Host) - if err != nil { - return "", err + var resolvedIp string + resolvedIp, dnsErr = resolveHostname(peer.Endpoint.Host) + if dnsErr != nil { + return } - var ip net.IP - for _, iterip := range ips { - iterip = iterip.To4() - if iterip != nil { - ip = iterip - break - } - if ip == nil { - ip = iterip - } - } - if ip == nil { - return "", errors.New("Unable to resolve IP address of endpoint") - } - resolvedEndpoint := Endpoint{ip.String(), peer.Endpoint.Port} + resolvedEndpoint := Endpoint{resolvedIp, peer.Endpoint.Port} output.WriteString(fmt.Sprintf("endpoint=%s\n", resolvedEndpoint.String())) } -- cgit v1.2.3-59-g8ed1b