Copy dns requests and give them a fresh id when doing recursive queries.

This commit is contained in:
Tom Wilkie committed 2015-07-14 16:44:21 +00:00
1 parent 7ae06ef00d
commit fa73240812
1 file changed
+4 -1
+4 -1
View File
@@ -227,7 +227,9 @@ func (d *DNSServer) handleRecursive(client *dns.Client, defaultMaxResponseSize i
}
for _, server := range d.upstream.Servers {
response, _, err := client.Exchange(req, fmt.Sprintf("%s:%s", server, d.upstream.Port))
reqCopy := *req
reqCopy.Id = dns.Id()
response, _, err := client.Exchange(&reqCopy, fmt.Sprintf("%s:%s", server, d.upstream.Port))
if err != nil || response == nil {
d.ns.debugf("error trying %s: %v", server, err)
continue
@@ -237,6 +239,7 @@ func (d *DNSServer) handleRecursive(client *dns.Client, defaultMaxResponseSize i
continue
}
d.ns.debugf("response: %+v", response)
response.SetReply(req)
if err := w.WriteMsg(response); err != nil {
d.ns.infof("error responding: %v", err)
}