kopia lustrzana https://github.com/gaul/s3proxy
rodzic
a6c997d71c
commit
5c843eb272
|
@ -459,13 +459,16 @@ final class S3ProxyHandler extends AbstractHandler {
|
||||||
String blobName) throws IOException {
|
String blobName) throws IOException {
|
||||||
// Flag headers present since HttpServletResponse.getHeader returns
|
// Flag headers present since HttpServletResponse.getHeader returns
|
||||||
// null for empty headers.
|
// null for empty headers.
|
||||||
|
boolean hasContentLength = false;
|
||||||
boolean hasContentMD5 = false;
|
boolean hasContentMD5 = false;
|
||||||
ImmutableMap.Builder<String, String> userMetadata =
|
ImmutableMap.Builder<String, String> userMetadata =
|
||||||
ImmutableMap.builder();
|
ImmutableMap.builder();
|
||||||
Enumeration<String> enumeration = request.getHeaderNames();
|
Enumeration<String> enumeration = request.getHeaderNames();
|
||||||
while (enumeration.hasMoreElements()) {
|
while (enumeration.hasMoreElements()) {
|
||||||
String headerName = enumeration.nextElement();
|
String headerName = enumeration.nextElement();
|
||||||
if (headerName.equals(HttpHeaders.CONTENT_MD5)) {
|
if (headerName.equals(HttpHeaders.CONTENT_LENGTH)) {
|
||||||
|
hasContentLength = true;
|
||||||
|
} else if (headerName.equals(HttpHeaders.CONTENT_MD5)) {
|
||||||
hasContentMD5 = true;
|
hasContentMD5 = true;
|
||||||
} else if (headerName.toLowerCase().startsWith(
|
} else if (headerName.toLowerCase().startsWith(
|
||||||
USER_METADATA_PREFIX)) {
|
USER_METADATA_PREFIX)) {
|
||||||
|
@ -498,6 +501,33 @@ final class S3ProxyHandler extends AbstractHandler {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!hasContentLength) {
|
||||||
|
sendSimpleErrorResponse(response,
|
||||||
|
HttpServletResponse.SC_LENGTH_REQUIRED,
|
||||||
|
"MissingContentLength", "Length Required",
|
||||||
|
Optional.<String>absent());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
long contentLength = 0;
|
||||||
|
boolean validContentLength = true;
|
||||||
|
String contentLengthString = request.getHeader(
|
||||||
|
HttpHeaders.CONTENT_LENGTH);
|
||||||
|
if (contentLengthString == null) {
|
||||||
|
validContentLength = false;
|
||||||
|
} else {
|
||||||
|
try {
|
||||||
|
contentLength = Long.parseLong(contentLengthString);
|
||||||
|
} catch (NumberFormatException nfe) {
|
||||||
|
validContentLength = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!validContentLength || contentLength < 0) {
|
||||||
|
sendSimpleErrorResponse(response,
|
||||||
|
HttpServletResponse.SC_BAD_REQUEST, "InvalidArgument",
|
||||||
|
"Invalid Argument", Optional.<String>absent());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
try (InputStream is = request.getInputStream()) {
|
try (InputStream is = request.getInputStream()) {
|
||||||
BlobBuilder.PayloadBlobBuilder builder = blobStore
|
BlobBuilder.PayloadBlobBuilder builder = blobStore
|
||||||
.blobBuilder(blobName)
|
.blobBuilder(blobName)
|
||||||
|
|
Ładowanie…
Reference in New Issue