]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Use default_rcode for AsyncDnsServer where applicable
authorŠtěpán Balážik <stepan@isc.org>
Thu, 30 Oct 2025 13:07:12 +0000 (14:07 +0100)
committerŠtěpán Balážik <stepan@isc.org>
Thu, 18 Dec 2025 12:03:14 +0000 (13:03 +0100)
Rule of thumb: If a RCode is set unconditionally in all
ResponseHandlers, set it in the server constructor.

bin/tests/system/chain/ans4/ans.py
bin/tests/system/dispatch/ans3/ans.py
bin/tests/system/fetchlimit/ans4/ans.py
bin/tests/system/forward/ans6/ans.py
bin/tests/system/rpzrecurse/ans5/ans.py
bin/tests/system/zero/ans5/ans.py

index bec20985f4b0c5040bb10b3eafa80bf64a1e3398..618b36bdf534d5d6f912207ae57363927c4d5d6a 100755 (executable)
@@ -443,7 +443,6 @@ class ChainResponseHandler(DomainHandler):
         for rrset in self._additional_rrsets:
             qctx.response.additional.append(rrset)
 
-        qctx.response.set_rcode(dns.rcode.NOERROR)
         qctx.response.use_edns()
         yield DnsResponseSend(qctx.response)
 
@@ -473,7 +472,9 @@ class ChainResponseHandler(DomainHandler):
 
 
 def main() -> None:
-    server = ControllableAsyncDnsServer(default_aa=True)
+    server = ControllableAsyncDnsServer(
+        default_aa=True, default_rcode=dns.rcode.NOERROR
+    )
     server.install_control_command(ChainSetupCommand())
     server.run()
 
index 653232f9915bc1d926e5bfff1ce77c85ed37bbb4..774f9a5414d514f0a2d94b4b1e5788ec5a65a7d1 100644 (file)
@@ -29,13 +29,12 @@ class TruncateOnUdpHandler(ResponseHandler):
         self, qctx: QueryContext
     ) -> AsyncGenerator[ResponseAction, None]:
         assert qctx.protocol == DnsProtocol.UDP, "This server only supports UDP"
-        qctx.response.set_rcode(dns.rcode.NOERROR)
         qctx.response.flags |= dns.flags.TC
         yield DnsResponseSend(qctx.response)
 
 
 def main() -> None:
-    server = AsyncDnsServer()
+    server = AsyncDnsServer(default_rcode=dns.rcode.NOERROR)
     server.install_connection_handler(ConnectionReset(delay=1.0))
     server.install_response_handler(TruncateOnUdpHandler())
     server.run()
index a7f82cb5b23afa6ab49e6cc8088bb45595ad0d35..9797735a82c9ec44ef936d4f8f64a56a33db98d2 100644 (file)
@@ -33,13 +33,14 @@ class MaybeDelayedAddressAnswerHandler(ResponseHandler):
             rrset = dns.rrset.from_text(qctx.qname, 300, qctx.qclass, qctx.qtype, addr)
             qctx.response.answer.append(rrset)
 
-        qctx.response.set_rcode(dns.rcode.NOERROR)
         delay = 0.05 if qctx.qname.labels[0].startswith(b"latency") else 0.00
         yield DnsResponseSend(qctx.response, delay=delay)
 
 
 def main() -> None:
-    server = ControllableAsyncDnsServer(default_aa=True)
+    server = ControllableAsyncDnsServer(
+        default_aa=True, default_rcode=dns.rcode.NOERROR
+    )
     server.install_control_command(ToggleResponsesCommand())
     server.install_response_handler(MaybeDelayedAddressAnswerHandler())
     server.run()
index 6eaa5a322daa409658e151c6b6b224cc5fce5e82..ac1db7ed1e5ad266711ac137f1a544a9340060e9 100644 (file)
@@ -60,7 +60,6 @@ class ChaseDsHandler(ResponseHandler):
             response_rdata = ". . 0 0 0 0 0"
             response_section = qctx.response.authority
 
-        qctx.response.set_rcode(dns.rcode.NOERROR)
         qctx.response.use_edns(None)
 
         response_rrset = dns.rrset.from_text(
@@ -72,7 +71,9 @@ class ChaseDsHandler(ResponseHandler):
 
 
 def main() -> None:
-    server = ControllableAsyncDnsServer(default_aa=True)
+    server = ControllableAsyncDnsServer(
+        default_rcode=dns.rcode.NOERROR, default_aa=True
+    )
     server.install_control_command(ToggleResponsesCommand())
     server.install_response_handler(ChaseDsHandler())
     server.run()
index 5902cf285dc48fa1e877b496f4913ded898a80cb..8c2f7dffc04208ff5cadef65dfc6e70a756a5f8a 100644 (file)
@@ -35,7 +35,6 @@ class ReplyA(ResponseHandler):
             qctx.qname, 300, dns.rdataclass.IN, dns.rdatatype.A, "10.53.0.5"
         )
         qctx.response.answer.append(a_rrset)
-        qctx.response.set_rcode(dns.rcode.NOERROR)
         yield DnsResponseSend(qctx.response)
 
 
@@ -49,19 +48,10 @@ class IgnoreNs(ResponseHandler):
         yield ResponseDrop()
 
 
-class FallbackHandler(ResponseHandler):
-    async def get_responses(
-        self, qctx: QueryContext
-    ) -> AsyncGenerator[DnsResponseSend, None]:
-        qctx.response.set_rcode(dns.rcode.NOERROR)
-        yield DnsResponseSend(qctx.response)
-
-
 def main() -> None:
-    server = AsyncDnsServer(default_aa=True)
+    server = AsyncDnsServer(default_aa=True, default_rcode=dns.rcode.NOERROR)
     server.install_response_handler(ReplyA())
     server.install_response_handler(IgnoreNs())
-    server.install_response_handler(FallbackHandler())
     server.run()
 
 
index 970c175556b6ee84375bbb26aa50abe71ad6100c..e3438bfd73f519d3d42ac4f0ed2b0b6804b2b7a3 100644 (file)
@@ -48,12 +48,11 @@ class IncrementARecordHandler(ResponseHandler):
             qctx.response.answer.append(rrset)
             self._ip_address += 1
 
-        qctx.response.set_rcode(dns.rcode.NOERROR)
         yield DnsResponseSend(qctx.response)
 
 
 def main() -> None:
-    server = AsyncDnsServer(default_aa=True)
+    server = AsyncDnsServer(default_aa=True, default_rcode=dns.rcode.NOERROR)
     server.install_response_handler(IncrementARecordHandler())
     server.run()