diff options
| author | Shulhan <ms@kilabit.info> | 2019-04-12 18:56:24 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2019-04-12 21:19:19 +0700 |
| commit | dd3942e6369c79a00f7cdfbb065644c37f758169 (patch) | |
| tree | 095358560dbe34b409abaccfb3dd5942cfd0088f | |
| parent | d857f7976205ed5140f67d8d437216616199818e (diff) | |
| download | pakakeh.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.go | 8 |
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) } } |
