What version of Go are you using (go version)?
(oath_tools) N9N7C9PNWP:hca palakas$ go version
go version go1.19.4 darwin/arm64
(oath_tools) N9N7C9PNWP:hca palakas$
Does this issue reproduce with the latest release?
Yes.
What operating system and processor architecture are you using (go env)?
go env Output
$ go env
What did you do?
We have a small helper function like this:
// dial attempts to open a tcp connection to the host:port address with a 3 second timeout
func dial(host string, port int) error {
conn, err := net.DialTimeout("tcp", fmt.Sprintf("%s:%d", host, port), time.Second*3)
if err == nil {
conn.Close()
return nil
}
return err
}
This function gets the error "dial tcp: lookup zts.athens.yahoo.com: i/o timeout", when /etc/resolv.conf has nameservers that are not reachable at the top.
For ex:
[palakas@a26074b9 ~]$ cat /etc/resolv.conf
; Created by cloud-init on instance boot automatically, do not edit.
;
nameserver 98.136.206.44
nameserver 98.136.206.45
nameserver 98.136.206.41
nameserver 98.136.206.42
[palakas@a26074b9 ~]$ telnet 98.136.206.44 53
Trying 98.136.206.44...
^C
[palakas@a26074b9 ~]$ telnet 98.136.206.45 53
Trying 98.136.206.45...
^C
[palakas@a26074b9 ~]$ telnet 98.136.206.41 53
Trying 98.136.206.41...
Connected to 98.136.206.41.
Escape character is '^]'.
^C^]
telnet> quit
Connection closed.
[palakas@a26074b9 ~]$ nslookup www.yahoo.com
Server: 98.136.206.41
Address: 98.136.206.41#53
www.yahoo.com canonical name = new-fp-shed.wg1.b.yahoo.com.
Name: new-fp-shed.wg1.b.yahoo.com
Address: 98.137.11.165
Name: new-fp-shed.wg1.b.yahoo.com
Address: 2001:4998:24:120d::f000
[palakas@a26074b9 ~]$
What did you expect to see?
Go resolver code to continue to try a nameserver that is reachable and pick up the answer. For example, nslookup or dig don't have any issue in resolving the names when an unreachable nameserver is at the top in /etc/resolve.conf
What did you see instead?
We are getting at timeout, possibly after trying the nameservers that are not reachable.
What version of Go are you using (
go version)?Does this issue reproduce with the latest release?
Yes.
What operating system and processor architecture are you using (
go env)?go envOutputWhat did you do?
We have a small helper function like this:
This function gets the error "dial tcp: lookup zts.athens.yahoo.com: i/o timeout", when /etc/resolv.conf has nameservers that are not reachable at the top.
For ex:
What did you expect to see?
Go resolver code to continue to try a nameserver that is reachable and pick up the answer. For example, nslookup or dig don't have any issue in resolving the names when an unreachable nameserver is at the top in /etc/resolve.conf
What did you see instead?
We are getting at timeout, possibly after trying the nameservers that are not reachable.