From: Javier M. Mellid Date: Mon, 13 Jul 2015 16:37:44 +0000 (+0200) Subject: rgw: add minimum support for copy multipart part X-Git-Tag: v9.1.0~474^2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=b7b1bf23da7ea5045f2cf9b4030a7d8682495168;p=ceph.git rgw: add minimum support for copy multipart part Return a NotImplemented error code, rather than NoSuchKey. Fixes: #7817 Signed-off-by: Javier M. Mellid --- diff --git a/src/rgw/rgw_common.h b/src/rgw/rgw_common.h index 1baf17862528..bb45be725e67 100644 --- a/src/rgw/rgw_common.h +++ b/src/rgw/rgw_common.h @@ -148,6 +148,7 @@ using ceph::crypto::MD5; #define ERR_MALFORMED_XML 2029 #define ERR_USER_SUSPENDED 2100 #define ERR_INTERNAL_ERROR 2200 +#define ERR_NOT_IMPLEMENTED 2201 #ifndef UINT32_MAX #define UINT32_MAX (0xffffffffu) diff --git a/src/rgw/rgw_http_errors.h b/src/rgw/rgw_http_errors.h index 78776f46339b..1b8ca3623ab8 100644 --- a/src/rgw/rgw_http_errors.h +++ b/src/rgw/rgw_http_errors.h @@ -56,6 +56,7 @@ const static struct rgw_http_errors RGW_HTTP_ERRORS[] = { { ERR_UNPROCESSABLE_ENTITY, 422, "UnprocessableEntity" }, { ERR_LOCKED, 423, "Locked" }, { ERR_INTERNAL_ERROR, 500, "InternalError" }, + { ERR_NOT_IMPLEMENTED, 501, "NotImplemented" }, }; const static struct rgw_http_errors RGW_HTTP_SWIFT_ERRORS[] = { @@ -109,6 +110,7 @@ const static struct rgw_http_status_code http_codes[] = { { 417, "Expectation Failed" }, { 422, "Unprocessable Entity" }, { 500, "Internal Server Error" }, + { 501, "Not Implemented" }, { 0, NULL }, }; diff --git a/src/rgw/rgw_rest_s3.cc b/src/rgw/rgw_rest_s3.cc index 768766f8892c..2dce3e1b46ae 100644 --- a/src/rgw/rgw_rest_s3.cc +++ b/src/rgw/rgw_rest_s3.cc @@ -1422,6 +1422,10 @@ int RGWCopyObj_ObjStore_S3::init_dest_policy() int RGWCopyObj_ObjStore_S3::get_params() { + if (s->info.env->get("HTTP_X_AMZ_COPY_SOURCE_RANGE")) { + return -ERR_NOT_IMPLEMENTED; + } + if_mod = s->info.env->get("HTTP_X_AMZ_COPY_IF_MODIFIED_SINCE"); if_unmod = s->info.env->get("HTTP_X_AMZ_COPY_IF_UNMODIFIED_SINCE"); if_match = s->info.env->get("HTTP_X_AMZ_COPY_IF_MATCH");