From: Andreas Bernacca Date: Fri, 9 Aug 2019 02:33:55 +0000 (+0200) Subject: Ignore Content-Encoding headers that are invalid (#196) X-Git-Tag: 0.7.0~22 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=de91fdfa16aa4b38b4b73cbeb45b70c13a0347ae;p=thirdparty%2Fhttpx.git Ignore Content-Encoding headers that are invalid (#196) --- diff --git a/httpx/models.py b/httpx/models.py index 4b9bdc5d..e7e7a57a 100644 --- a/httpx/models.py +++ b/httpx/models.py @@ -780,8 +780,11 @@ class BaseResponse: values = self.headers.getlist("content-encoding", split_commas=True) for value in values: value = value.strip().lower() - decoder_cls = SUPPORTED_DECODERS[value] - decoders.append(decoder_cls()) + try: + decoder_cls = SUPPORTED_DECODERS[value] + decoders.append(decoder_cls()) + except KeyError: + continue if len(decoders) == 1: self._decoder = decoders[0] diff --git a/tests/test_decoders.py b/tests/test_decoders.py index 49247a9f..e292eb06 100644 --- a/tests/test_decoders.py +++ b/tests/test_decoders.py @@ -86,3 +86,12 @@ def test_decoding_errors(header_value): with pytest.raises(httpx.exceptions.DecodingError): response = httpx.Response(200, headers=headers, content=compressed_body) response.content + + +def test_invalid_content_encoding_header(header_value): + headers = [(b"Content-Encoding", header_value)] + body = b"test 123" + + response = httpx.Response(200, headers=headers, content=body) + + assert response.read() == body