HTTPCLIENT-1312: Zero length content entities with a Content-Encoding header cause an I/O error when an attempt is made to consume such entity
git-svn-id: https://svn.apache.org/repos/asf/httpcomponents/httpclient/trunk@1440673 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
e37f99ccda
commit
1f7b7a32af
|
@ -1,7 +1,11 @@
|
|||
Changes since 4.3 ALPHA1
|
||||
-------------------
|
||||
|
||||
* [HTTPCLIENT-1313] Fixed IllegalStateException in deprecated ThreadSafeClientConnManager
|
||||
* [HTTPCLIENT-1312] Zero length content entities with a Content-Encoding header cause
|
||||
an I/O error when an attempt is made to consume such entity.
|
||||
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
||||
|
||||
* [HTTPCLIENT-1313] Fixed IllegalStateException in deprecated ThreadSafeClientConnManager.
|
||||
Contributed by Oleg Kalnichevski <olegk at apache.org>
|
||||
|
||||
* [HTTPCLIENT-1305] Ensure chunking is disabled when applying Base64 encoding.
|
||||
|
|
|
@ -73,8 +73,9 @@ public class ResponseContentEncoding implements HttpResponseInterceptor {
|
|||
final HttpContext context) throws HttpException, IOException {
|
||||
final HttpEntity entity = response.getEntity();
|
||||
|
||||
// It wasn't a 304 Not Modified response, 204 No Content or similar
|
||||
if (entity != null) {
|
||||
// entity can be null in case of 304 Not Modified, 204 No Content or similar
|
||||
// check for zero length entity.
|
||||
if (entity != null && entity.getContentLength() != 0) {
|
||||
final Header ceheader = entity.getContentEncoding();
|
||||
if (ceheader != null) {
|
||||
final HeaderElement[] codecs = ceheader.getElements();
|
||||
|
|
|
@ -82,6 +82,21 @@ public class TestResponseContentEncoding {
|
|||
Assert.assertTrue(entity instanceof GzipDecompressingEntity);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGzipContentEncodingZeroLength() throws Exception {
|
||||
final HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
|
||||
final StringEntity original = new StringEntity("");
|
||||
original.setContentEncoding("GZip");
|
||||
response.setEntity(original);
|
||||
final HttpContext context = new BasicHttpContext();
|
||||
|
||||
final HttpResponseInterceptor interceptor = new ResponseContentEncoding();
|
||||
interceptor.process(response, context);
|
||||
final HttpEntity entity = response.getEntity();
|
||||
Assert.assertNotNull(entity);
|
||||
Assert.assertTrue(entity instanceof StringEntity);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testXGzipContentEncoding() throws Exception {
|
||||
final HttpResponse response = new BasicHttpResponse(HttpVersion.HTTP_1_1, 200, "OK");
|
||||
|
|
Loading…
Reference in New Issue