diff options
| author | Chris Lu <chrislusf@users.noreply.github.com> | 2022-03-30 01:27:13 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-30 01:27:13 -0700 |
| commit | ce8ef60c597ebce86efab7bf50c9a6de8aeea7cf (patch) | |
| tree | 150ee1dfd51d2daff173677dd9364113557f3934 | |
| parent | 8732cc24c8f64634aa4e14dbb9e400bf84640a2d (diff) | |
| parent | 6317f6a8a9352575855da1dbe88a0fff48c69d92 (diff) | |
| download | seaweedfs-ce8ef60c597ebce86efab7bf50c9a6de8aeea7cf.tar.xz seaweedfs-ce8ef60c597ebce86efab7bf50c9a6de8aeea7cf.zip | |
Merge pull request #2840 from kmlebedev/fix_multi_object_delete_key_limit
fix test_s3.test_multi_object_delete_key_limit and test_multi_objectv2_delete_key_limit
| -rw-r--r-- | weed/s3api/s3api_object_handlers.go | 9 | ||||
| -rw-r--r-- | weed/s3api/s3err/s3api_errors.go | 6 |
2 files changed, 15 insertions, 0 deletions
diff --git a/weed/s3api/s3api_object_handlers.go b/weed/s3api/s3api_object_handlers.go index 6bcf2266f..4d6c18a78 100644 --- a/weed/s3api/s3api_object_handlers.go +++ b/weed/s3api/s3api_object_handlers.go @@ -27,6 +27,10 @@ import ( "github.com/chrislusf/seaweedfs/weed/util" ) +const ( + deleteMultipleObjectsLimmit = 1000 +) + func mimeDetect(r *http.Request, dataReader io.Reader) io.ReadCloser { mimeBuffer := make([]byte, 512) size, _ := dataReader.Read(mimeBuffer) @@ -217,6 +221,11 @@ func (s3a *S3ApiServer) DeleteMultipleObjectsHandler(w http.ResponseWriter, r *h return } + if len(deleteObjects.Objects) > deleteMultipleObjectsLimmit { + s3err.WriteErrorResponse(w, r, s3err.ErrInvalidMaxDeleteObjects) + return + } + var deletedObjects []ObjectIdentifier var deleteErrors []DeleteError var auditLog *s3err.AccessLog diff --git a/weed/s3api/s3err/s3api_errors.go b/weed/s3api/s3err/s3api_errors.go index f4a83d979..52803f398 100644 --- a/weed/s3api/s3err/s3api_errors.go +++ b/weed/s3api/s3err/s3api_errors.go @@ -61,6 +61,7 @@ const ( ErrInvalidMaxKeys ErrInvalidMaxUploads ErrInvalidMaxParts + ErrInvalidMaxDeleteObjects ErrInvalidPartNumberMarker ErrInvalidPart ErrInternalError @@ -157,6 +158,11 @@ var errorCodeResponse = map[ErrorCode]APIError{ Description: "Argument max-parts must be an integer between 0 and 2147483647", HTTPStatusCode: http.StatusBadRequest, }, + ErrInvalidMaxDeleteObjects: { + Code: "InvalidArgument", + Description: "Argument objects can contain a list of up to 1000 keys", + HTTPStatusCode: http.StatusBadRequest, + }, ErrInvalidPartNumberMarker: { Code: "InvalidArgument", Description: "Argument partNumberMarker must be an integer.", |
