Tweak encoding behaviour

- Don't fail to identity encoding when an unknown encoding is specified.
- Don't constrain encodings. I want to try to modify traffic as little as
possible by default.
- When decoding, delete content-encoding header rather than set it to "identity"
- Refuse to decode/encode when there is an existing but unknown
content-encoding header.
This commit is contained in:
Aldo Cortesi 2011-08-02 20:34:01 +12:00
parent bb6ec29b18
commit 8cc0469ee7
3 changed files with 13 additions and 8 deletions

View File

@ -8,21 +8,25 @@ __ALL__ = ["ENCODINGS"]
ENCODINGS = set(["identity", "gzip", "deflate"])
def decode(encoding, content):
def decode(e, content):
encoding_map = {
"identity": identity,
"gzip": decode_gzip,
"deflate": decode_deflate,
}
return encoding_map.get(encoding, identity)(content)
if e not in encoding_map:
return None
return encoding_map[e](content)
def encode(encoding, content):
def encode(e, content):
encoding_map = {
"identity": identity,
"gzip": encode_gzip,
"deflate": encode_deflate,
}
return encoding_map.get(encoding, identity)(content)
if e not in encoding_map:
return None
return encoding_map[e](content)
def identity(content):
"""

View File

@ -588,8 +588,6 @@ class FlowMaster(controller.Master):
f.request.anticache()
if self.anticomp:
f.request.anticomp()
else:
f.request.constrain_encoding()
if self.server_playback:
pb = self.do_server_playback(f)

View File

@ -134,11 +134,14 @@ class HTTPMsg(controller.Msg):
Content-Encoding header and changing Content-Encoding header to
'identity'.
"""
ce = self.headers["content-encoding"]
if not ce or ce[0] not in encoding.ENCODINGS:
return
self.content = encoding.decode(
(self.headers["content-encoding"] or ["identity"])[0],
ce[0],
self.content
)
self.headers["content-encoding"] = ["identity"]
del self.headers["content-encoding"]
def encode(self, e):
"""