Fix null content-length header on HEAD requests
https://issues.apache.org/jira/projects/JCLOUDS/issues/JCLOUDS-1505
diff --git a/drivers/apachehc/src/main/java/org/jclouds/http/apachehc/ApacheHCHttpCommandExecutorService.java b/drivers/apachehc/src/main/java/org/jclouds/http/apachehc/ApacheHCHttpCommandExecutorService.java
index 75144f6..57bb2d0 100644
--- a/drivers/apachehc/src/main/java/org/jclouds/http/apachehc/ApacheHCHttpCommandExecutorService.java
+++ b/drivers/apachehc/src/main/java/org/jclouds/http/apachehc/ApacheHCHttpCommandExecutorService.java
@@ -88,7 +88,7 @@
org.apache.http.HttpResponse apacheResponse = executeRequest(nativeRequest);
Payload payload = null;
- if (apacheResponse.getEntity() != null)
+ if (apacheResponse.getEntity() != null) {
try {
payload = Payloads.newInputStreamPayload(apacheResponse.getEntity().getContent());
if (apacheResponse.getEntity().getContentLength() >= 0)
@@ -99,17 +99,19 @@
logger.warn(e, "couldn't receive payload for request: %s", nativeRequest.getRequestLine());
throw e;
}
+ }
Multimap<String, String> headers = LinkedHashMultimap.create();
for (Header header : apacheResponse.getAllHeaders()) {
headers.put(header.getName(), header.getValue());
}
if (payload != null) {
contentMetadataCodec.fromHeaders(payload.getContentMetadata(), headers);
+ headers = filterOutContentHeaders(headers);
}
return HttpResponse.builder().statusCode(apacheResponse.getStatusLine().getStatusCode())
.message(apacheResponse.getStatusLine().getReasonPhrase())
.payload(payload)
- .headers(filterOutContentHeaders(headers)).build();
+ .headers(headers).build();
}
private org.apache.http.HttpResponse executeRequest(HttpUriRequest nativeRequest) throws IOException,