From b901a1169cc78313298d70cce770cd1523ccbf9f Mon Sep 17 00:00:00 2001 From: Dimitry Kolyshev Date: Tue, 16 Apr 2024 11:03:52 +0200 Subject: [PATCH] dnsforward: imp code --- internal/dnsforward/filter.go | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/internal/dnsforward/filter.go b/internal/dnsforward/filter.go index faff248b..f6cd319d 100644 --- a/internal/dnsforward/filter.go +++ b/internal/dnsforward/filter.go @@ -40,12 +40,7 @@ func (s *Server) filterDNSRequest(dctx *dnsContext) (res *filtering.Result, err // TODO(a.garipov): Make CheckHost return a pointer. res = &resVal switch { - case res.Reason.In( - filtering.Rewritten, - filtering.RewrittenRule, - filtering.FilteredSafeSearch) && - res.CanonName != "" && - len(res.IPList) == 0: + case isRewrittenCNAME(res): // Resolve the new canonical name, not the original host name. The // original question is readded in processFilteringAfterResponse. dctx.origQuestion = q @@ -64,6 +59,17 @@ func (s *Server) filterDNSRequest(dctx *dnsContext) (res *filtering.Result, err return res, err } +// isRewrittenCNAME returns true if the request considered to be rewritten with +// CNAME and has no resolved IPs. +func isRewrittenCNAME(res *filtering.Result) (ok bool) { + return res.Reason.In( + filtering.Rewritten, + filtering.RewrittenRule, + filtering.FilteredSafeSearch) && + res.CanonName != "" && + len(res.IPList) == 0 +} + // checkHostRules checks the host against filters. It is safe for concurrent // use. func (s *Server) checkHostRules(