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());
          }