mirror of
https://github.com/coredns/coredns.git
synced 2025-10-27 16:24:19 -04:00
request: add match function (#1615)
This commit is contained in:
@@ -361,6 +361,24 @@ func (r *Request) Clear() {
|
||||
r.name = ""
|
||||
}
|
||||
|
||||
// Match checks if the reply matches the qname and qtype from the request, it returns
|
||||
// false when they don't match.
|
||||
func (r *Request) Match(reply *dns.Msg) bool {
|
||||
if len(reply.Question) != 1 {
|
||||
return false
|
||||
}
|
||||
|
||||
if strings.ToLower(reply.Question[0].Name) != r.Name() {
|
||||
return false
|
||||
}
|
||||
|
||||
if reply.Question[0].Qtype != r.QType() {
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
|
||||
const (
|
||||
// TODO(miek): make this less awkward.
|
||||
doTrue = 1
|
||||
|
||||
@@ -109,6 +109,26 @@ func TestRequestScrubExtra(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestRequestMatch(t *testing.T) {
|
||||
st := testRequest()
|
||||
reply := new(dns.Msg)
|
||||
|
||||
reply.SetQuestion("example.com.", dns.TypeMX)
|
||||
if b := st.Match(reply); b {
|
||||
t.Errorf("failed to match %s %d, got %t, expected %t", "example.com.", dns.TypeMX, b, false)
|
||||
}
|
||||
|
||||
reply.SetQuestion("example.com.", dns.TypeA)
|
||||
if b := st.Match(reply); !b {
|
||||
t.Errorf("failed to match %s %d, got %t, expected %t", "example.com.", dns.TypeA, b, true)
|
||||
}
|
||||
|
||||
reply.SetQuestion("example.org.", dns.TypeA)
|
||||
if b := st.Match(reply); b {
|
||||
t.Errorf("failed to match %s %d, got %t, expected %t", "example.org.", dns.TypeA, b, false)
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkRequestDo(b *testing.B) {
|
||||
st := testRequest()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user