From 617b3ae3e99d61a63bd06a1e10b1080186e04ff9 Mon Sep 17 00:00:00 2001 From: Ka-Hing Cheung Date: Tue, 18 Nov 2014 00:53:36 -0800 Subject: [PATCH] more compatibility fixes for s3cmd s3cmd uses virtual hostname for bucket name, with the host header including the port. need to strip out the port to find out the bucket name --- src/main/java/org/gaul/s3proxy/S3ProxyHandler.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/org/gaul/s3proxy/S3ProxyHandler.java b/src/main/java/org/gaul/s3proxy/S3ProxyHandler.java index c98396d..f928cb6 100644 --- a/src/main/java/org/gaul/s3proxy/S3ProxyHandler.java +++ b/src/main/java/org/gaul/s3proxy/S3ProxyHandler.java @@ -49,6 +49,7 @@ import com.google.common.collect.TreeMultimap; import com.google.common.hash.HashCode; import com.google.common.io.BaseEncoding; import com.google.common.io.ByteStreams; +import com.google.common.net.HostAndPort; import com.google.common.net.HttpHeaders; import org.eclipse.jetty.server.Request; @@ -121,6 +122,7 @@ final class S3ProxyHandler extends AbstractHandler { logger.debug("request: {}", request); String hostHeader = request.getHeader(HttpHeaders.HOST); if (hostHeader != null && virtualHost.isPresent()) { + hostHeader = HostAndPort.fromString(hostHeader).getHostText(); String virtualHostSuffix = "." + virtualHost.get(); if (hostHeader.endsWith(virtualHostSuffix)) { String bucket = hostHeader.substring(0,