aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2019-04-12 18:56:24 +0700
committerShulhan <ms@kilabit.info>2019-04-12 21:19:19 +0700
commitdd3942e6369c79a00f7cdfbb065644c37f758169 (patch)
tree095358560dbe34b409abaccfb3dd5942cfd0088f
parentd857f7976205ed5140f67d8d437216616199818e (diff)
downloadpakakeh.go-dd3942e6369c79a00f7cdfbb065644c37f758169.tar.xz
dns: always set is local to true when answer found on cache
If the answer found in cache, local or non local, when processing it as response it should be pass as local; otherwise the same answer will moved to back twice.
-rw-r--r--lib/dns/server.go8
1 files changed, 2 insertions, 6 deletions
diff --git a/lib/dns/server.go b/lib/dns/server.go
index 268bd0fb..df98d0e1 100644
--- a/lib/dns/server.go
+++ b/lib/dns/server.go
@@ -495,8 +495,7 @@ func (srv *Server) serveTCPClient(cl *TCPClient) {
//
func (srv *Server) processRequest() {
var (
- res *Message
- isLocal bool
+ res *Message
)
for req := range srv.requestq {
@@ -513,7 +512,6 @@ func (srv *Server) processRequest() {
req.message.SetResponseCode(RCodeErrName)
}
- isLocal = false
if an == nil {
if req.message.Header.IsRD && srv.hasForwarders {
srv.forwardq <- req
@@ -523,7 +521,6 @@ func (srv *Server) processRequest() {
req.message.SetQuery(false)
req.message.SetAuthorativeAnswer(true)
res = req.message
- isLocal = true
} else {
if an.msg.IsExpired() && srv.hasForwarders {
srv.forwardq <- req
@@ -532,10 +529,9 @@ func (srv *Server) processRequest() {
an.msg.SetID(req.message.Header.ID)
res = an.msg
- isLocal = (an.receivedAt == 0)
}
- srv.processResponse(req, res, isLocal)
+ srv.processResponse(req, res, true)
}
}