]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
dnsdist: Better handling of network events in the regression test responders
authorRemi Gacogne <remi.gacogne@powerdns.com>
Fri, 18 Aug 2023 06:36:54 +0000 (08:36 +0200)
committerromeroalx <alexis.romero@open-xchange.com>
Wed, 7 May 2025 08:28:22 +0000 (10:28 +0200)
regression-tests.dnsdist/dnsdisttests.py

index ddebb29ec5fcbad71cdd5f4b162941c2166f21b2..86a985d6e1e2ffd17c66c4bc48fb32abea780db6 100644 (file)
@@ -320,7 +320,11 @@ class DNSDistTest(AssertEqualDNSMessageMixin, unittest.TestCase):
     @classmethod
     def handleTCPConnection(cls, conn, fromQueue, toQueue, trailingDataResponse=False, multipleResponses=False, callback=None, partialWrite=False):
       ignoreTrailing = trailingDataResponse is True
-      data = conn.recv(2)
+      try:
+        data = conn.recv(2)
+      except Exception as err:
+        data = None
+        print(f'Error while reading query size in TCP responder thread {err=}, {type(err)=}')
       if not data:
         conn.close()
         return
@@ -440,6 +444,9 @@ class DNSDistTest(AssertEqualDNSMessageMixin, unittest.TestCase):
         except ssl.SSLEOFError as e:
           print("Unexpected EOF: %s" % (e))
           return
+        except Exception as err:
+          print(f'Unexpected exception in DoH responder thread (connection init) {err=}, {type(err)=}')
+          return
 
         dnsData = {}
 
@@ -470,7 +477,11 @@ class DNSDistTest(AssertEqualDNSMessageMixin, unittest.TestCase):
         # be careful, HTTP/2 headers and data might be in different recv() results
         requestHeaders = None
         while True:
-            data = conn.recv(65535)
+            try:
+              data = conn.recv(65535)
+            except Exception as err:
+              data = None
+              print(f'Unexpected exception in DoH responder thread {err=}, {type(err)=}')
             if not data:
                 break