From 5db7d3577b046732cd835f7f5bc9b02f4ed7219c Mon Sep 17 00:00:00 2001 From: Cuong Manh Le Date: Fri, 10 Jan 2025 18:50:39 +0700 Subject: [PATCH] cmd/cli: handle . domain query By returning FormErr response, the same behavior with ControlD. --- cmd/cli/dns_proxy.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/cmd/cli/dns_proxy.go b/cmd/cli/dns_proxy.go index 8b198a7..623c7d2 100644 --- a/cmd/cli/dns_proxy.go +++ b/cmd/cli/dns_proxy.go @@ -106,11 +106,18 @@ func (p *prog) serveDNS(listenerNum string) error { go p.detectLoop(m) q := m.Question[0] domain := canonicalName(q.Name) - if domain == selfCheckInternalTestDomain { + switch { + case domain == "": + answer := new(dns.Msg) + answer.SetRcode(m, dns.RcodeFormatError) + _ = w.WriteMsg(answer) + return + case domain == selfCheckInternalTestDomain: answer := resolveInternalDomainTestQuery(ctx, domain, m) _ = w.WriteMsg(answer) return } + if _, ok := p.cacheFlushDomainsMap[domain]; ok && p.cache != nil { p.cache.Purge() ctrld.Log(ctx, mainLog.Load().Debug(), "received query %q, local cache is purged", domain)