diff options
author | Brad Dixon <brad.dixon@carvesystems.com> | 2020-06-04 20:26:31 -0400 |
---|---|---|
committer | Brad Dixon <brad.dixon@carvesystems.com> | 2020-06-08 09:09:09 -0400 |
commit | 75ec05c85e597e66128c68c124f8a0376a5db7f2 (patch) | |
tree | c11995d5a3b43252d741ed8bbd66cf47379e8d02 | |
parent | 107b019b05798f97d2a0de8ef866ea6197975d9f (diff) | |
download | mitmproxy-75ec05c85e597e66128c68c124f8a0376a5db7f2.tar.gz mitmproxy-75ec05c85e597e66128c68c124f8a0376a5db7f2.tar.bz2 mitmproxy-75ec05c85e597e66128c68c124f8a0376a5db7f2.zip |
HTTP2 response reason is None, render as '' in property.
Fixes an error triggered when displaying an HTTP2 response loaded
from a file.
-rw-r--r-- | mitmproxy/net/http/response.py | 8 | ||||
-rw-r--r-- | test/mitmproxy/net/http/test_response.py | 6 |
2 files changed, 12 insertions, 2 deletions
diff --git a/mitmproxy/net/http/response.py b/mitmproxy/net/http/response.py index 2e864405..c4dbf408 100644 --- a/mitmproxy/net/http/response.py +++ b/mitmproxy/net/http/response.py @@ -122,10 +122,14 @@ class Response(message.Message): def reason(self): """ HTTP Reason Phrase, e.g. "Not Found". - This is always :py:obj:`None` for HTTP2 requests, because HTTP2 responses do not contain a reason phrase. + HTTP2 responses do not contain a reason phrase and self.data.reason will be :py:obj:`None`. + When :py:obj:`None` return an empty reason phrase so that functions expecting a string work properly. """ # Encoding: http://stackoverflow.com/a/16674906/934719 - return self.data.reason.decode("ISO-8859-1", "surrogateescape") + if self.data.reason is not None: + return self.data.reason.decode("ISO-8859-1", "surrogateescape") + else: + return "" @reason.setter def reason(self, reason): diff --git a/test/mitmproxy/net/http/test_response.py b/test/mitmproxy/net/http/test_response.py index 27c16be6..08d72840 100644 --- a/test/mitmproxy/net/http/test_response.py +++ b/test/mitmproxy/net/http/test_response.py @@ -77,6 +77,12 @@ class TestResponseCore: resp.data.reason = b'cr\xe9e' assert resp.reason == "crée" + # HTTP2 responses do not contain a reason phrase and self.data.reason will be None. + # This should render to an empty reason phrase so that functions + # expecting a string work properly. + resp.data.reason = None + assert resp.reason == "" + class TestResponseUtils: """ |