From 315daa042a2b390c3b66b87df87b72eb25188483 Mon Sep 17 00:00:00 2001 From: Maximilian Hils Date: Wed, 3 May 2017 17:26:56 +0200 Subject: fix #2310 --- mitmproxy/net/http/message.py | 3 ++- test/mitmproxy/addons/test_export.py | 4 ++-- test/mitmproxy/net/http/test_message.py | 8 ++++++++ 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/mitmproxy/net/http/message.py b/mitmproxy/net/http/message.py index 1040c6ce..cb32aee4 100644 --- a/mitmproxy/net/http/message.py +++ b/mitmproxy/net/http/message.py @@ -226,8 +226,9 @@ class Message(serializable.Serializable): Raises: ValueError, when the content-encoding is invalid and strict is True. """ - self.raw_content = self.get_content(strict) + decoded = self.get_content(strict) self.headers.pop("content-encoding", None) + self.content = decoded def encode(self, e): """ diff --git a/test/mitmproxy/addons/test_export.py b/test/mitmproxy/addons/test_export.py index 5c7c4976..233c62d5 100644 --- a/test/mitmproxy/addons/test_export.py +++ b/test/mitmproxy/addons/test_export.py @@ -45,11 +45,11 @@ def tcp_flow(): class TestExportCurlCommand: def test_get(self, get_request): - result = """curl -H 'header:qvalue' -H 'content-length:7' 'http://address:22/path?a=foo&a=bar&b=baz'""" + result = """curl -H 'header:qvalue' -H 'content-length:0' 'http://address:22/path?a=foo&a=bar&b=baz'""" assert export.curl_command(get_request) == result def test_post(self, post_request): - result = "curl -X POST 'http://address:22/path' --data-binary '{}'".format( + result = "curl -H 'content-length:256' -X POST 'http://address:22/path' --data-binary '{}'".format( str(bytes(range(256)))[2:-1] ) assert export.curl_command(post_request) == result diff --git a/test/mitmproxy/net/http/test_message.py b/test/mitmproxy/net/http/test_message.py index b75bc7c2..c6036697 100644 --- a/test/mitmproxy/net/http/test_message.py +++ b/test/mitmproxy/net/http/test_message.py @@ -117,6 +117,14 @@ class TestMessageContentEncoding: assert r.content == b"message" assert r.raw_content != b"message" + def test_update_content_length_header(self): + r = tutils.tresp() + assert int(r.headers["content-length"]) == 7 + r.encode("gzip") + assert int(r.headers["content-length"]) == 27 + r.decode() + assert int(r.headers["content-length"]) == 7 + def test_modify(self): r = tutils.tresp() assert "content-encoding" not in r.headers -- cgit v1.2.3