]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Dump out qlog json if it is malformed
authorNeil Horman <nhorman@openssl.org>
Thu, 29 Feb 2024 17:01:31 +0000 (12:01 -0500)
committerNeil Horman <nhorman@openssl.org>
Sat, 2 Mar 2024 14:12:54 +0000 (09:12 -0500)
We're still seeing periodic failures in qlog from malformed json output,
so lets try to catch it.

Modify the verify-qlog.py script to, in the event of an exception in
json.loads, to replay the entire json file to the console, followed by
an exception indicating what line it died trying to parse.

Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/23715)

test/recipes/70-test_quic_multistream_data/verify-qlog.py

index b056bf857cafe67380120ae35abcfe9bdb418d8c..ae11007f3ea784d77ba8db27deb2851c5efc1542 100755 (executable)
@@ -14,6 +14,10 @@ class Unexpected(Exception):
     def __init__(self, filename, msg):
         Exception.__init__(self, f"file {repr(filename)}: {msg}")
 
+class Malformed(Exception):
+    def __init__(self, line, msg):
+        Exception.__init__(self, f"{line}: {msg}")
+
 event_type_counts = {}
 frame_type_counts = {}
 
@@ -25,7 +29,13 @@ def load_file(filename):
                 raise Unexpected(filename, "expected JSON-SEQ leader")
 
             line = line[1:]
-            objs.append(json.loads(line))
+            try:
+                objs.append(json.loads(line))
+            except:
+                fi.seek(0)
+                fdata = fi.read()
+                print(fdata)
+                raise Malformed(line, "Malformed json input")
     return objs
 
 def check_header(filename, hdr):