Copy dns requests and give them a fresh id when doing recursive queries.
This commit is contained in:
1 parent
7ae06ef00d
commit
fa73240812
1 file changed
+4
-1
+4
-1
@@ -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)
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user