GZipMiddleware is incompatible with iterator-style HttpResponse objects
|Reported by:||jamesh||Owned by:||nobody|
|Has patch:||no||Needs documentation:||no|
|Needs tests:||no||Patch needs improvement:||no|
An HttpResponse object that has been initialised with an iterator can only have its content read once. The first line of GZipMiddleware.process_response reads the response body and throws it away:
if response.status_code != 200 or len(response.content) < 200: return response
After this point, whether the middleware decides to compress the body or not, the content has been lost.
If the middleware encounters such a response, it should make sure it reads the body at most once.