diff --git a/dns/client.go b/dns/client.go index a8b4ecd..7687c99 100644 --- a/dns/client.go +++ b/dns/client.go @@ -117,17 +117,17 @@ func (c *Client) exchange(qname string, reqBytes []byte, preferTCP bool) (server servers := c.GetServers(qname) for _, server = range servers { rc, err = dialer.Dial(network, server) - // TODO: support timeout setting for different upstream server - if len(servers) > 1 { - rc.SetDeadline(time.Now().Add(time.Duration(3) * time.Second)) - } - if err != nil { log.F("[dns] failed to connect to server %v: %v", server, err) continue } defer rc.Close() + // TODO: support timeout setting for different upstream server + if len(servers) > 1 { + rc.SetDeadline(time.Now().Add(time.Duration(3) * time.Second)) + } + switch network { case "tcp": respBytes, err = c.exchangeTCP(rc, reqBytes)