Emit NotImplemented for unknown x-amz headers

pull/78/head
Andrew Gaul 2015-07-30 21:39:06 -07:00
rodzic b85dc31d48
commit 0daa04a3ed
1 zmienionych plików z 24 dodań i 0 usunięć

Wyświetl plik

@ -148,6 +148,15 @@ final class S3ProxyHandler extends AbstractHandler {
"uploadId",
"uploads"
);
/** All supported x-amz- headers, except for x-amz-meta- user metadata. */
private static final Set<String> SUPPORTED_X_AMZ_HEADERS = ImmutableSet.of(
"x-amz-acl",
"x-amz-copy-source",
"x-amz-copy-source-range",
"x-amz-date",
"x-amz-metadata-directive",
"x-amz-storage-class" // ignored
);
private static final Set<String> CANNED_ACLS = ImmutableSet.of(
"private",
"public-read",
@ -383,6 +392,21 @@ final class S3ProxyHandler extends AbstractHandler {
}
}
// emit NotImplemented for unknown x-amz- headers
for (String headerName : Collections.list(request.getHeaderNames())) {
if (!headerName.startsWith("x-amz-")) {
continue;
}
if (headerName.startsWith("x-amz-meta-")) {
continue;
}
if (!SUPPORTED_X_AMZ_HEADERS.contains(headerName)) {
logger.error("Unknown header {} with URI {}",
headerName, request.getRequestURI());
throw new S3Exception(S3ErrorCode.NOT_IMPLEMENTED);
}
}
String uploadId = request.getParameter("uploadId");
switch (method) {
case "DELETE":