s3: CopyObject return http Status 400 Bad Request for non-existing source
fix https://github.com/chrislusf/seaweedfs/issues/2306
This commit is contained in:
@@ -33,11 +33,13 @@ func (s3a *S3ApiServer) CopyObjectHandler(w http.ResponseWriter, r *http.Request
|
|||||||
entry, err := s3a.getEntry(dir, name)
|
entry, err := s3a.getEntry(dir, name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s3err.WriteErrorResponse(w, s3err.ErrInvalidCopySource, r)
|
s3err.WriteErrorResponse(w, s3err.ErrInvalidCopySource, r)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
entry.Extended = weed_server.SaveAmzMetaData(r, entry.Extended, isReplace(r))
|
entry.Extended = weed_server.SaveAmzMetaData(r, entry.Extended, isReplace(r))
|
||||||
err = s3a.touch(dir, name, entry)
|
err = s3a.touch(dir, name, entry)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s3err.WriteErrorResponse(w, s3err.ErrInvalidCopySource, r)
|
s3err.WriteErrorResponse(w, s3err.ErrInvalidCopySource, r)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
writeSuccessResponseXML(w, CopyObjectResult{
|
writeSuccessResponseXML(w, CopyObjectResult{
|
||||||
ETag: fmt.Sprintf("%x", entry.Attributes.Md5),
|
ETag: fmt.Sprintf("%x", entry.Attributes.Md5),
|
||||||
@@ -51,6 +53,13 @@ func (s3a *S3ApiServer) CopyObjectHandler(w http.ResponseWriter, r *http.Request
|
|||||||
s3err.WriteErrorResponse(w, s3err.ErrInvalidCopySource, r)
|
s3err.WriteErrorResponse(w, s3err.ErrInvalidCopySource, r)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
srcPath := util.FullPath(fmt.Sprintf("%s/%s%s", s3a.option.BucketsPath, srcObject, srcObject))
|
||||||
|
dir, name := srcPath.DirAndName()
|
||||||
|
_, err = s3a.getEntry(dir, name)
|
||||||
|
if err != nil {
|
||||||
|
s3err.WriteErrorResponse(w, s3err.ErrInvalidCopySource, r)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if srcBucket == dstBucket && srcObject == dstObject {
|
if srcBucket == dstBucket && srcObject == dstObject {
|
||||||
s3err.WriteErrorResponse(w, s3err.ErrInvalidCopyDest, r)
|
s3err.WriteErrorResponse(w, s3err.ErrInvalidCopyDest, r)
|
||||||
|
|||||||
Reference in New Issue
Block a user