aboutsummaryrefslogtreecommitdiff
path: root/plugin
diff options
context:
space:
mode:
authorGravatar Miek Gieben <miek@miek.nl> 2019-06-13 10:36:47 +0100
committerGravatar GitHub <noreply@github.com> 2019-06-13 10:36:47 +0100
commit481dea50adf367dff57bbe0ed454ae6f5eaf72d7 (patch)
tree89375963c365ce882e485bda83bd067e061c3799 /plugin
parent27ca097df49b6d056e30340fc6ef6e61897f64f9 (diff)
downloadcoredns-481dea50adf367dff57bbe0ed454ae6f5eaf72d7.tar.gz
coredns-481dea50adf367dff57bbe0ed454ae6f5eaf72d7.tar.zst
coredns-481dea50adf367dff57bbe0ed454ae6f5eaf72d7.zip
plugin/cache: remove item.Autoritative (#2885)
* plugin/cache: remove item.Autoritative Confuses clients if not set; remove it. Signed-off-by: Miek Gieben <miek@miek.nl> * Add extra comments on why we do this Signed-off-by: Miek Gieben <miek@miek.nl>
Diffstat (limited to 'plugin')
-rw-r--r--plugin/cache/cache_test.go17
-rw-r--r--plugin/cache/item.go7
2 files changed, 12 insertions, 12 deletions
diff --git a/plugin/cache/cache_test.go b/plugin/cache/cache_test.go
index 7c65bca64..4afaf73c4 100644
--- a/plugin/cache/cache_test.go
+++ b/plugin/cache/cache_test.go
@@ -17,7 +17,6 @@ type cacheTestCase struct {
test.Case
in test.Case
AuthenticatedData bool
- Authoritative bool
RecursionAvailable bool
Truncated bool
shouldCache bool
@@ -25,7 +24,7 @@ type cacheTestCase struct {
var cacheTestCases = []cacheTestCase{
{
- RecursionAvailable: true, AuthenticatedData: true, Authoritative: true,
+ RecursionAvailable: true, AuthenticatedData: true,
Case: test.Case{
Qname: "miek.nl.", Qtype: dns.TypeMX,
Answer: []dns.RR{
@@ -43,7 +42,7 @@ var cacheTestCases = []cacheTestCase{
shouldCache: true,
},
{
- RecursionAvailable: true, AuthenticatedData: true, Authoritative: true,
+ RecursionAvailable: true, AuthenticatedData: true,
Case: test.Case{
Qname: "mIEK.nL.", Qtype: dns.TypeMX,
Answer: []dns.RR{
@@ -70,7 +69,7 @@ var cacheTestCases = []cacheTestCase{
shouldCache: false,
},
{
- RecursionAvailable: true, Authoritative: true,
+ RecursionAvailable: true,
Case: test.Case{
Rcode: dns.RcodeNameError,
Qname: "example.org.", Qtype: dns.TypeA,
@@ -88,7 +87,7 @@ var cacheTestCases = []cacheTestCase{
shouldCache: true,
},
{
- RecursionAvailable: true, Authoritative: false,
+ RecursionAvailable: true,
Case: test.Case{
Rcode: dns.RcodeServerFailure,
Qname: "example.org.", Qtype: dns.TypeA,
@@ -102,7 +101,7 @@ var cacheTestCases = []cacheTestCase{
shouldCache: true,
},
{
- RecursionAvailable: true, Authoritative: false,
+ RecursionAvailable: true,
Case: test.Case{
Rcode: dns.RcodeNotImplemented,
Qname: "example.org.", Qtype: dns.TypeA,
@@ -116,7 +115,7 @@ var cacheTestCases = []cacheTestCase{
shouldCache: true,
},
{
- RecursionAvailable: true, Authoritative: true,
+ RecursionAvailable: true,
Case: test.Case{
Qname: "miek.nl.", Qtype: dns.TypeMX,
Do: true,
@@ -138,7 +137,7 @@ var cacheTestCases = []cacheTestCase{
shouldCache: false,
},
{
- RecursionAvailable: true, Authoritative: true,
+ RecursionAvailable: true,
Case: test.Case{
Qname: "example.org.", Qtype: dns.TypeMX,
Do: true,
@@ -164,7 +163,7 @@ var cacheTestCases = []cacheTestCase{
func cacheMsg(m *dns.Msg, tc cacheTestCase) *dns.Msg {
m.RecursionAvailable = tc.RecursionAvailable
m.AuthenticatedData = tc.AuthenticatedData
- m.Authoritative = tc.Authoritative
+ m.Authoritative = true
m.Rcode = tc.Rcode
m.Truncated = tc.Truncated
m.Answer = tc.in.Answer
diff --git a/plugin/cache/item.go b/plugin/cache/item.go
index f4858c3b1..edc7610a4 100644
--- a/plugin/cache/item.go
+++ b/plugin/cache/item.go
@@ -9,7 +9,6 @@ import (
type item struct {
Rcode int
- Authoritative bool
AuthenticatedData bool
RecursionAvailable bool
Answer []dns.RR
@@ -25,7 +24,6 @@ type item struct {
func newItem(m *dns.Msg, now time.Time, d time.Duration) *item {
i := new(item)
i.Rcode = m.Rcode
- i.Authoritative = m.Authoritative
i.AuthenticatedData = m.AuthenticatedData
i.RecursionAvailable = m.RecursionAvailable
i.Answer = m.Answer
@@ -56,7 +54,10 @@ func (i *item) toMsg(m *dns.Msg, now time.Time) *dns.Msg {
m1 := new(dns.Msg)
m1.SetReply(m)
- m1.Authoritative = false
+ // Set this to true as some DNS clients disgard the *entire* packet when it's non-authoritative.
+ // This is probably not according to spec, but the bit itself is not super useful as this point, so
+ // just set it to true.
+ m1.Authoritative = true
m1.AuthenticatedData = i.AuthenticatedData
m1.RecursionAvailable = i.RecursionAvailable
m1.Rcode = i.Rcode