func (d dnsAPI) Recurse(w dns.ResponseWriter, req *dns.Msg) { var client dns.Client if isTCP(w.RemoteAddr()) { client.Net = "tcp" } for _, recursor := range d.Recursors { res, _, err := client.Exchange(req, recursor) if err != nil { continue } w.WriteMsg(res) return } // Return SERVFAIL res := &dns.Msg{} res.RecursionAvailable = true res.SetRcode(req, dns.RcodeServerFailure) w.WriteMsg(res) }