mirror of
				https://github.com/coredns/coredns.git
				synced 2025-10-31 10:13:14 -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