diff --git a/bin/tests/system/isctest/asyncserver.py b/bin/tests/system/isctest/asyncserver.py index dd9f623916..fefd03bb27 100644 --- a/bin/tests/system/isctest/asyncserver.py +++ b/bin/tests/system/isctest/asyncserver.py @@ -1375,8 +1375,12 @@ class AsyncDnsServer(AsyncServer): qctx.socket, qctx.protocol.name, ) + try: + response_text = str(response) + except OverflowError: + response_text = "" logging.debug( - "\n".join([f"[OUT] {l}" for l in [""] + str(response).splitlines()]) + "\n".join([f"[OUT] {l}" for l in [""] + response_text.splitlines()]) ) return diff --git a/bin/tests/system/isctest/query.py b/bin/tests/system/isctest/query.py index a7e862b7f6..650c1fc637 100644 --- a/bin/tests/system/isctest/query.py +++ b/bin/tests/system/isctest/query.py @@ -44,6 +44,17 @@ def generic_query( log_response: bool = True, ) -> Any: + def _safe_to_text(msg: dns.message.Message) -> str: + """ + Convert a DNS message to text, tolerating dnspython's failure to render + RRSIG inception/expiration timestamps that overflow the platform's + time_t (e.g. post-2038 values on 32-bit systems). + """ + try: + return msg.to_text() + except OverflowError: + return "" + def log_querymsg(exception: Exception | None = None) -> None: """ Helper for logging query message. Call this *after* query_func() has @@ -54,7 +65,7 @@ def generic_query( nonlocal log_query if log_query: isctest.log.debug( - f"isc.query.{query_func.__name__}(): query\n{message.to_text()}" + f"isc.query.{query_func.__name__}(): query\n{_safe_to_text(message)}" ) log_query = False # only log query once @@ -99,7 +110,7 @@ def generic_query( if res: if log_response: isctest.log.debug( - f"isc.query.{query_func.__name__}(): response\n{res.to_text()}" + f"isc.query.{query_func.__name__}(): response\n{_safe_to_text(res)}" ) if res.rcode() == expected_rcode or expected_rcode is None: return res