summaryrefslogtreecommitdiff
path: root/src/webob/response.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/webob/response.py')
-rw-r--r--src/webob/response.py11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/webob/response.py b/src/webob/response.py
index e02de87..51d6c89 100644
--- a/src/webob/response.py
+++ b/src/webob/response.py
@@ -1322,8 +1322,15 @@ class Response:
self.content_encoding = None
gzip_f.close()
else:
- # Weird feature: http://bugs.python.org/issue5784
- self.body = zlib.decompress(self.body, -15)
+ try:
+ # RFC7230 section 4.2.2 specifies that the body should be wrapped
+ # inside a ZLIB (RFC1950) container ...
+ self.body = zlib.decompress(self.body)
+ except zlib.error:
+ # ... but there are nonconformant implementations around which send
+ # the data without the ZLIB container, so we use maximum window size
+ # decompression without header check (the - sign)
+ self.body = zlib.decompress(self.body, -15)
self.content_encoding = None
def md5_etag(self, body=None, set_content_md5=False):