There were multiple typos and omissions regarding query minimization.
yield DnsResponseSend(qctx.response, authoritative=False)
-# XXX: This handler is here to provide bug-for-bug compatibility with the old server.
-class XXXBuggyTldNsHandler(QnameQtypeHandler, FallbackHandler):
- qnames = [
- "tld1.",
- "tld2.",
- ]
-
- qtypes = [dns.rdatatype.NS]
-
-
def main() -> None:
server = AsyncDnsServer(default_rcode=dns.rcode.NOERROR)
NoResponseExampleUdpHandler(),
RootNsHandler(),
ZoneVersionHandler(),
- XXXBuggyTldNsHandler(),
)
# Then install DomainHandlers
class BadGoodDnameNsHandler(QnameQtypeHandler, StaticResponseHandler):
qnames = ["baddname.example.net.", "gooddname.example.net."]
qtypes = [dns.rdatatype.NS]
- # XXX: This should really be, for brevity:
- # authority = [soa_rrset("example.net.")]
- # But we are reproducing the exact behavior of the original server.
- authority = [
- rrset("example.net.", dns.rdatatype.SOA, "1. 2. 3 4 5 1814400 3600", ttl=0)
- ]
+ authority = [soa_rrset("example.net.")]
class CnameSubHandler(QnameHandler, StaticResponseHandler):
if qctx.qtype == dns.rdatatype.SOA:
qctx.response.answer.append(soa_rrset(qctx.qname))
elif qctx.qtype == dns.rdatatype.NS:
- # XXX: The delegation is broken here; dot is missing from NS target names.
- # I don't know if this is intentional, but for now we are chasing behavior parity.
- ns2_rrset = rrset(qctx.qname, dns.rdatatype.NS, f"ns2{qctx.qname}")
- ns3_rrset = rrset(qctx.qname, dns.rdatatype.NS, f"ns3{qctx.qname}")
+ ns2_rrset = rrset(qctx.qname, dns.rdatatype.NS, f"ns2.{qctx.qname}")
+ ns3_rrset = rrset(qctx.qname, dns.rdatatype.NS, f"ns3.{qctx.qname}")
qctx.response.answer.append(ns2_rrset)
qctx.response.answer.append(ns3_rrset)
else: