From 05a6c56b72e8846afeebd6d9f3eaa6d77d3bb090 Mon Sep 17 00:00:00 2001 From: Brad Dixon Date: Tue, 21 Jul 2020 15:56:21 -0400 Subject: [PATCH] Fix incompatibility reading version 7 files when flow has no response. A flow can be stored without a response. The compatibility functions for version 8 and 9 assumed that all flows had a response. This changes fixes that assumption. --- mitmproxy/io/compat.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mitmproxy/io/compat.py b/mitmproxy/io/compat.py index 18d00dfde..142daba16 100644 --- a/mitmproxy/io/compat.py +++ b/mitmproxy/io/compat.py @@ -175,7 +175,8 @@ def convert_6_7(data): def convert_7_8(data): data["version"] = 8 data["request"]["trailers"] = None - data["response"]["trailers"] = None + if data["response"] is not None: + data["response"]["trailers"] = None return data @@ -184,7 +185,9 @@ def convert_8_9(data): data["request"].pop("first_line_format") data["request"]["authority"] = b"" is_request_replay = data["request"].pop("is_replay", False) - is_response_replay = data["response"].pop("is_replay", False) + is_response_replay = False + if data["response"] is not None: + is_response_replay = data["response"].pop("is_replay", False) if is_request_replay: # pragma: no cover data["is_replay"] = "request" elif is_response_replay: # pragma: no cover