From d4e81ab5259c4c68021e7988025428e01a3bb98e Mon Sep 17 00:00:00 2001 From: JohnZ Date: Thu, 19 Apr 2012 19:24:11 +0100 Subject: [PATCH] modified: cloudbridge/src/com/cloud/bridge/service/S3RestServlet.java modified: cloudbridge/src/com/cloud/bridge/service/controller/s3/S3ObjectAction.java modified: cloudbridge/src/com/cloud/bridge/service/core/s3/S3PutObjectInlineResponse.java --- agent/scripts/_run.sh | 0 cloudbridge/src/com/cloud/bridge/service/S3RestServlet.java | 4 ++-- .../cloud/bridge/service/controller/s3/S3ObjectAction.java | 4 +++- .../bridge/service/core/s3/S3PutObjectInlineResponse.java | 5 ++++- 4 files changed, 9 insertions(+), 4 deletions(-) mode change 100644 => 100755 agent/scripts/_run.sh diff --git a/agent/scripts/_run.sh b/agent/scripts/_run.sh old mode 100644 new mode 100755 diff --git a/cloudbridge/src/com/cloud/bridge/service/S3RestServlet.java b/cloudbridge/src/com/cloud/bridge/service/S3RestServlet.java index fc3d9ca17ec..04e8a2cbc7f 100644 --- a/cloudbridge/src/com/cloud/bridge/service/S3RestServlet.java +++ b/cloudbridge/src/com/cloud/bridge/service/S3RestServlet.java @@ -157,8 +157,8 @@ public class S3RestServlet extends HttpServlet { } catch(Throwable e) { logger.error("Unexpected exception " + e.getMessage(), e); - response.setStatus(500); - endResponse(response, "Internal server error"); + response.setStatus(400); + endResponse(response, "Bad request"); } finally { try { diff --git a/cloudbridge/src/com/cloud/bridge/service/controller/s3/S3ObjectAction.java b/cloudbridge/src/com/cloud/bridge/service/controller/s3/S3ObjectAction.java index 3461fa81069..7bc9bae0041 100644 --- a/cloudbridge/src/com/cloud/bridge/service/controller/s3/S3ObjectAction.java +++ b/cloudbridge/src/com/cloud/bridge/service/controller/s3/S3ObjectAction.java @@ -129,7 +129,7 @@ public class S3ObjectAction implements ServletAction { else executePutObject(request, response); } else if ( null != (copy = request.getHeader( "x-amz-copy-source" ))) - { + { executeCopyObject(request, response, copy.trim()); } else executePutObject(request, response); @@ -454,6 +454,8 @@ public class S3ObjectAction implements ServletAction { // they are not HTTP request headers). All the values we used to get in the request headers // are not encoded in the request body. // + // add ETag header computed as Base64 MD5 whenever object is uploaded or updated + // public void executePostObject( HttpServletRequest request, HttpServletResponse response ) throws IOException { String bucket = (String) request.getAttribute(S3Constants.BUCKET_ATTR_KEY); diff --git a/cloudbridge/src/com/cloud/bridge/service/core/s3/S3PutObjectInlineResponse.java b/cloudbridge/src/com/cloud/bridge/service/core/s3/S3PutObjectInlineResponse.java index 16f5d13d9c7..8d7b131da64 100644 --- a/cloudbridge/src/com/cloud/bridge/service/core/s3/S3PutObjectInlineResponse.java +++ b/cloudbridge/src/com/cloud/bridge/service/core/s3/S3PutObjectInlineResponse.java @@ -31,8 +31,11 @@ public class S3PutObjectInlineResponse extends S3Response { uploadId = -1; } + + // add ETag header computed as Base64 MD5 whenever object is uploaded or updated + // the Base64 is represented in lowercase public String getETag() { - return ETag; + return ETag.toLowerCase(); } public void setETag(String eTag) {