Skip to content
Snippets Groups Projects

WIP: dns64: workaround for broken auths which fail on AAAA query

Closed Petr Špaček requested to merge 483-dns64-aaaa-failures-fix into master
+ 3
3
@@ -40,7 +40,6 @@ function M.layer.consume(state, req, pkt)
end
local qry = req:current()
print(state, pkt:rcode(), tonumber(req.answ_selected.len), pkt:qname(), pkt:qtype(), qry.flags.RESOLVED)
if bit.band(state, kres.FAIL) ~= 0 and not qry.flags.RESOLVED then
-- resolution is not finished yet
return state
@@ -51,7 +50,6 @@ function M.layer.consume(state, req, pkt)
if bit.band(state, kres.DONE) and rcode == kres.rcode.NOERROR and req.answ_selected.len > 0 then
-- NOERROR might be NODATA, look for AAAA in answer
for idx = 0, tonumber(req.answ_selected.len - 1) do
print(idx)
if (req.answ_selected.at[idx].to_wire == true
and req.answ_selected.at[idx].rr.type == kres.type.AAAA)
then
@@ -60,10 +58,12 @@ function M.layer.consume(state, req, pkt)
end
end
end
print('aaaapresent ' .. tostring(aaaapresent))
if pkt:qtype() == kres.type.AAAA and pkt:qname() == qry:name()
and not qry.flags.CNAME and qry.parent == nil
and aaaapresent == false then
if verbose() then
ffi.C.kr_log_qverbose_impl(qry, 'dns64', 'no AAAA found, querying for A\n')
end
-- Start a *marked* corresponding A sub-query.
local extraFlags = kres.mk_qflags({})
extraFlags.DNSSEC_WANT = qry.flags.DNSSEC_WANT
Loading