]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Fix regression tests
authorOtto Moerbeek <otto@drijf.net>
Mon, 24 Mar 2025 11:58:14 +0000 (12:58 +0100)
committerOtto Moerbeek <otto.moerbeek@open-xchange.com>
Thu, 4 Sep 2025 09:05:16 +0000 (11:05 +0200)
pdns/recursordist/syncres.cc
regression-tests.recursor-dnssec/recursortests.py
regression-tests.recursor-dnssec/test_Cookies.py
regression-tests.recursor-dnssec/test_EDNSBufferSize.py
regression-tests.recursor-dnssec/test_Interop.py
regression-tests.recursor-dnssec/test_Lua.py
regression-tests.recursor-dnssec/test_RoutingTag.py
regression-tests.recursor-dnssec/test_SimpleCookies.py

index 6c008be0184411b10986b0cb23b262305d0c0bfe..531a1ac3dd456bb511538af071badc6856a40749 100644 (file)
@@ -5480,7 +5480,7 @@ bool SyncRes::doResolveAtThisIP(const std::string& prefix, const DNSName& qname,
       LOG(prefix << qname << ": Answer has no ECS, trying again without EDNS Client Subnet Mask" << endl);
       updateQueryCounts(prefix, qname, remoteIP, doTCP, doDoT);
       match = d_eventTrace.add(RecEventTrace::AuthRequest, qname.toLogString() + '/' + qtype.toString(), true, 0);
-      resolveret = asyncresolveWrapper(remoteIP, d_doDNSSEC, qname, auth, qtype.getCode(),
+      resolveret = asyncresolveWrapper(LogObject(prefix), remoteIP, d_doDNSSEC, qname, auth, qtype.getCode(),
                                        doTCP, sendRDQuery, &d_now, ednsmask, &lwr, &chained, nsName); // <- we go out on the wire!
       d_eventTrace.add(RecEventTrace::AuthRequest, static_cast<int64_t>(lwr.d_rcode), false, match);
     }
index 3b4d3c71e065645e0e9153333668a007ff93b569..5314e2c7b2bb358825938024473bc9b2ae18c20f 100644 (file)
@@ -445,6 +445,8 @@ PrivateKey: Ep9uo6+wwjb4MaOmqq7LHav2FLrjotVOeZg8JT1Qk04=
     # 22: test_EDNSBuffer.py
     # 23: test_Lua.py
     # 24: test_RoutingTag.py
+    # 25: test_Cookies.py
+    # 26: test_Cookies.py
 
     _auth_cmd = ['authbind',
                  os.environ['PDNS']]
index 6ec7467912b729880d23b9a8e595955ccf80ce83..490f5a31d1b8c2d9a773a6f40b7f139aafa8e246 100644 (file)
@@ -2,14 +2,19 @@ import dns
 import socket
 import os
 import time
-import threading
+
 from twisted.internet.protocol import Factory
 from twisted.internet.protocol import Protocol
 from twisted.internet.protocol import DatagramProtocol
 from twisted.internet import reactor
 
+import clientsubnetoption
+import cookiesoption
+
 from recursortests import RecursorTest
 
+cookieReactorRunning = False
+
 class CookiesTest(RecursorTest):
     _confdir = 'Cookies'
     _config_template = """
@@ -45,21 +50,21 @@ outgoing:
 
     @classmethod
     def startResponders(cls):
+        global cookieReactorRunning
         print("Launching responders..")
 
         address1 = cls._PREFIX + '.25'
         address2 = cls._PREFIX + '.26'
         port = 53
 
-        reactor.listenUDP(port, UDPResponder(), interface=address1)
-        reactor.listenTCP(port, TCPFactory(), interface=address1)
-        reactor.listenUDP(port, UDPResponder(), interface=address2)
-        reactor.listenTCP(port, TCPFactory(), interface=address2)
+        if not cookieReactorRunning:
+            reactor.listenUDP(port, UDPResponder(), interface=address1)
+            reactor.listenTCP(port, TCPFactory(), interface=address1)
+            reactor.listenUDP(port, UDPResponder(), interface=address2)
+            reactor.listenTCP(port, TCPFactory(), interface=address2)
+            cookieReactorRunning = True
 
-        if not reactor.running:
-            cls.Responder = threading.Thread(name='Responder', target=reactor.run, args=(False,))
-            cls.Responder.daemon = True
-            cls.Responder.start()
+        cls.startReactor()
 
     def checkCookies(self, support, server='127.0.0.25'):
         confdir = os.path.join('configs', self._confdir)
@@ -140,8 +145,11 @@ outgoing:
 class UDPResponder(DatagramProtocol):
     def getCookie(self, message):
         for option in message.options:
-            if option.otype == dns.edns.COOKIE: #and isinstance(option, dns.edns.CookieOption):
-                return option.data
+            if option.otype == dns.edns.COOKIE and isinstance(option, cookiesoption.CookiesOption):
+                data = option.client
+                if option.server is not None:
+                    data += option.server
+                return data
         return None
 
     def createCookie(self, clientcookie):
index 34c31d4b45baa41b7b7713ecd01f219eaf4ad20e..319c3866aab8c9b30d46839d80a55c19f4704270 100644 (file)
@@ -65,11 +65,7 @@ edns-outgoing-bufsize=%d
             reactor.listenUDP(port, UDPLargeResponder(), interface=address)
             ednsBufferReactorRunning = True
 
-        if not reactor.running:
-            cls._UDPResponder = threading.Thread(
-                name='UDP Responder', target=reactor.run, args=(False,))
-            cls._UDPResponder.setDaemon(True)
-            cls._UDPResponder.start()
+        cls.startReactor()
 
     def getMessage(self, testnum, payload=0):
         do_edns = payload > 0
index 33800beee96cc889e5c551b7ea1ba94c1501cd25..aa3d5125e78cfe0711589df0928172068a8e96cf 100644 (file)
@@ -147,10 +147,7 @@ forward-zones+=undelegated.insecure.example=%s.12
 
         reactor.listenUDP(port, UDPResponder(), interface=address)
 
-        if not reactor.running:
-            cls._UDPResponder = threading.Thread(name='UDP Responder', target=reactor.run, args=(False,))
-            cls._UDPResponder.setDaemon(True)
-            cls._UDPResponder.start()
+        cls.startReactor()
 
 class InteropProcessTest(RecursorTest):
     _confdir = 'InteropProcess'
index 40799449076406376cb52c8f9cfb81b018669f14..57fbe0a465acac41d1a4f64072bc1f7a57f7f2b0 100644 (file)
@@ -338,10 +338,7 @@ quiet=no
             reactor.listenUDP(port, UDPHooksResponder(), interface=address)
             hooksReactorRunning = True
 
-        if not reactor.running:
-            cls._UDPResponder = threading.Thread(name='UDP Hooks Responder', target=reactor.run, args=(False,))
-            cls._UDPResponder.setDaemon(True)
-            cls._UDPResponder.start()
+        cls.startReactor()
 
     def testNoData(self):
         expected = dns.rrset.from_text('nodata.luahooks.example.', 3600, dns.rdataclass.IN, 'AAAA', '2001:DB8::1')
index 9f0631b582df9dd2e1d8a290a7bafc25a813cadc..24ddd5fa6d06ca4059480a8d04191facaf6cf361 100644 (file)
@@ -81,10 +81,7 @@ ecs-add-for=0.0.0.0/0
             reactor.listenUDP(port, UDPRoutingResponder(), interface=address)
             routingReactorRunning = True
 
-        if not reactor.running:
-            cls._UDPResponder = threading.Thread(name='UDP Routing Responder', target=reactor.run, args=(False,))
-            cls._UDPResponder.setDaemon(True)
-            cls._UDPResponder.start()
+        cls.startReactor()
 
     @classmethod
     def tearDownClass(cls):
index d6a7ccb8eeabab406d9b926f8ce581d580fccbb5..a6f0004e7349b5f74c894391614ead5759b30b07 100644 (file)
@@ -4,6 +4,7 @@ from recursortests import RecursorTest
 
 class SimpleCookiesTest(RecursorTest):
     _confdir = 'SimpleCookies'
+    _auth_zones = RecursorTest._default_auth_zones
 
     _config_template = """
 recursor:
@@ -15,7 +16,7 @@ dnssec:
 outgoing:
   cookies: true""" % _confdir
 
-    _expectedCookies = 'no'
+    _expectedCookies = 'Unsupported'
     @classmethod
     def generateRecursorConfig(cls, confdir):
         authzonepath = os.path.join(confdir, 'authzone.zone')
@@ -134,7 +135,8 @@ outgoing:
 
 class SimpleCookiesAuthEnabledTest(SimpleCookiesTest):
     _confdir = 'SimpleCookiesAuthEnabled'
-    _expectedCookies = 'yes'
+    _auth_zones = SimpleCookiesTest._auth_zones
+    _expectedCookies = 'Supported'
 
     @classmethod
     def generateAuthConfig(cls, confdir, threads):