From fabe8e3a7a8b80ae16edce3d9ca2aac9dfcdf09c Mon Sep 17 00:00:00 2001 From: Remi Gacogne Date: Fri, 18 Aug 2023 08:36:54 +0200 Subject: [PATCH] dnsdist: Better handling of network events in the regression test responders --- regression-tests.dnsdist/dnsdisttests.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/regression-tests.dnsdist/dnsdisttests.py b/regression-tests.dnsdist/dnsdisttests.py index 579a63df61..156ba19219 100644 --- a/regression-tests.dnsdist/dnsdisttests.py +++ b/regression-tests.dnsdist/dnsdisttests.py @@ -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 -- 2.47.2