aboutsummaryrefslogtreecommitdiff
path: root/middleware/cache/item.go
diff options
context:
space:
mode:
Diffstat (limited to 'middleware/cache/item.go')
-rw-r--r--middleware/cache/item.go7
1 files changed, 6 insertions, 1 deletions
diff --git a/middleware/cache/item.go b/middleware/cache/item.go
index d2cb79520..f2d05f0a0 100644
--- a/middleware/cache/item.go
+++ b/middleware/cache/item.go
@@ -8,6 +8,7 @@ import (
)
type item struct {
+ Rcode int
Authoritative bool
AuthenticatedData bool
RecursionAvailable bool
@@ -21,6 +22,7 @@ type item struct {
func newItem(m *dns.Msg, d time.Duration) *item {
i := new(item)
+ i.Rcode = m.Rcode
i.Authoritative = m.Authoritative
i.AuthenticatedData = m.AuthenticatedData
i.RecursionAvailable = m.RecursionAvailable
@@ -45,12 +47,15 @@ func newItem(m *dns.Msg, d time.Duration) *item {
}
// toMsg turns i into a message, it tailers the reply to m.
+// The Autoritative bit is always set to 0, because the answer is from the cache.
func (i *item) toMsg(m *dns.Msg) *dns.Msg {
m1 := new(dns.Msg)
m1.SetReply(m)
- m1.Authoritative = i.Authoritative
+
+ m1.Authoritative = false
m1.AuthenticatedData = i.AuthenticatedData
m1.RecursionAvailable = i.RecursionAvailable
+ m1.Rcode = i.Rcode
m1.Compress = true
m1.Answer = i.Answer