Pull request: dnsforward: fix nxdomain for internal aaaa reqs

Updates #2393.

Squashed commit of the following:

commit 5ea4d3c2f217ed800da79c3d87184d8e0956e56c
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date:   Thu Mar 25 17:01:08 2021 +0300

    dnsforward: fix nxdomain for internal aaaa reqs
This commit is contained in:
Ainar Garipov 2021-03-25 17:21:00 +03:00
parent 88d924658e
commit 3764c1dfe4
2 changed files with 21 additions and 2 deletions

View File

@ -192,7 +192,11 @@ func (s *Server) onDHCPLeaseChanged(flags int) {
func (s *Server) processInternalHosts(dctx *dnsContext) (rc resultCode) {
req := dctx.proxyCtx.Req
q := req.Question[0]
if q.Qtype != dns.TypeA {
// Go on processing the AAAA request despite the fact that we don't
// support it yet. The expected behavior here is to respond with an
// empty asnwer and not NXDOMAIN.
if q.Qtype != dns.TypeA && q.Qtype != dns.TypeAAAA {
return resultCodeSuccess
}

View File

@ -52,6 +52,14 @@ func TestServer_ProcessInternalHosts(t *testing.T) {
wantIP: nil,
qtyp: dns.TypeA,
wantRes: resultCodeSuccess,
}, {
name: "success_internal_aaaa",
host: "example.lan",
suffix: defaultAutohostSuffix,
wantErrMsg: "",
wantIP: nil,
qtyp: dns.TypeAAAA,
wantRes: resultCodeSuccess,
}}
for _, tc := range testCases {
@ -92,7 +100,14 @@ func TestServer_ProcessInternalHosts(t *testing.T) {
}
pctx := dctx.proxyCtx
if tc.wantIP == nil {
if tc.qtyp == dns.TypeAAAA {
// TODO(a.garipov): Remove this special handling
// when we fully support AAAA.
require.NotNil(t, pctx.Res)
ans := pctx.Res.Answer
require.Len(t, ans, 0)
} else if tc.wantIP == nil {
assert.Nil(t, pctx.Res)
} else {
require.NotNil(t, pctx.Res)