Gzipped 204 responses raises ContentEncodingError #609
Closed
Description
When querying an HTTP endpoint that returns a 204 with a content-encoding: gzip, aiohttp raises a aiohttp.errors.ContentEncodingError: 400, message='deflate'.
(Note that aiohttp claims it's a error 400 but the server sends a 204 : 127.0.0.1 - - [30/Oct/2015 13:01:37] "POST / HTTP/1.1" 204 -)
I made a small repo with a minimal example : https://github.com/C4ptainCrunch/aiohttp-204-gzip-bug
Here is the full stacktrace :
content-encoding: gzip
Traceback (most recent call last):
File "client.py", line 14, in <module>
fetch(url)
File "/usr/lib64/python3.4/asyncio/base_events.py", line 316, in run_until_complete
return future.result()
File "/usr/lib64/python3.4/asyncio/futures.py", line 275, in result
raise self._exception
File "/usr/lib64/python3.4/asyncio/tasks.py", line 236, in _step
result = coro.send(value)
File "client.py", line 11, in fetch
return (yield from response.release())
File "/home/C4/sandbox/aiohttp/ve3/lib64/python3.4/site-packages/aiohttp/client_reqrep.py", line 648, in release
chunk = yield from content.readany()
File "/home/C4/sandbox/aiohttp/ve3/lib64/python3.4/site-packages/aiohttp/streams.py", line 472, in wrapper
result = yield from func(self, *args, **kw)
File "/home/C4/sandbox/aiohttp/ve3/lib64/python3.4/site-packages/aiohttp/streams.py", line 535, in readany
return (yield from super().readany())
File "/home/C4/sandbox/aiohttp/ve3/lib64/python3.4/site-packages/aiohttp/streams.py", line 265, in readany
raise self._exception
File "/home/C4/sandbox/aiohttp/ve3/lib64/python3.4/site-packages/aiohttp/parsers.py", line 181, in set_parser
next(p)
File "/home/C4/sandbox/aiohttp/ve3/lib64/python3.4/site-packages/aiohttp/protocol.py", line 312, in __call__
out.feed_eof()
File "/home/C4/sandbox/aiohttp/ve3/lib64/python3.4/site-packages/aiohttp/protocol.py", line 386, in feed_eof
raise errors.ContentEncodingError('deflate')
aiohttp.errors.ContentEncodingError: 400, message='deflate'