Issue-953 Make sure that port is set when modifying headers
diff --git a/apis/s3/src/main/java/org/jclouds/s3/binders/BindAsHostPrefixIfConfigured.java b/apis/s3/src/main/java/org/jclouds/s3/binders/BindAsHostPrefixIfConfigured.java
index d5675e8..321910f 100644
--- a/apis/s3/src/main/java/org/jclouds/s3/binders/BindAsHostPrefixIfConfigured.java
+++ b/apis/s3/src/main/java/org/jclouds/s3/binders/BindAsHostPrefixIfConfigured.java
@@ -65,7 +65,11 @@
public <R extends HttpRequest> R bindToRequest(R request, Object payload) {
if (isVhostStyle) {
request = bindAsHostPrefix.bindToRequest(request, payload);
- return ModifyRequest.replaceHeader(request, HttpHeaders.HOST, request.getEndpoint().getHost());
+ String host = request.getEndpoint().getHost();
+ if (request.getEndpoint().getPort() != -1) {
+ host += ":" + request.getEndpoint().getPort();
+ }
+ return ModifyRequest.replaceHeader(request, HttpHeaders.HOST, host);
} else {
UriBuilder builder = uriBuilderProvider.get().uri(request.getEndpoint());
StringBuilder path = new StringBuilder(Strings2.urlEncode(request.getEndpoint().getPath(), S3AsyncClient.class
diff --git a/core/src/main/java/org/jclouds/http/handlers/RedirectionRetryHandler.java b/core/src/main/java/org/jclouds/http/handlers/RedirectionRetryHandler.java
index 1966bc3..566e709 100644
--- a/core/src/main/java/org/jclouds/http/handlers/RedirectionRetryHandler.java
+++ b/core/src/main/java/org/jclouds/http/handlers/RedirectionRetryHandler.java
@@ -85,8 +85,12 @@
}
if (currentRequest.getFirstHeaderOrNull(HOST) != null && redirectionUrl.getHost() != null) {
+ String host = redirectionUrl.getHost();
+ if (redirectionUrl.getPort() != -1) {
+ host += ":" + redirectionUrl.getPort();
+ }
command.setCurrentRequest(ModifyRequest.replaceHeader(currentRequest, HOST,
- singletonList(redirectionUrl.getHost())).toBuilder().endpoint(redirectionUrl).build());
+ singletonList(host)).toBuilder().endpoint(redirectionUrl).build());
} else {
command.setCurrentRequest(currentRequest.toBuilder().endpoint(redirectionUrl).build());
}