diff options
| author | Chris Lu <chris.lu@gmail.com> | 2020-10-20 10:25:16 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2020-10-20 10:25:16 -0700 |
| commit | b3aa2fab9ab4f79da7deb5b70c528cdcbe32dc3f (patch) | |
| tree | f857f94d6b45045827727dee330da5cbbb6b4d61 /weed/s3api/s3api_object_handlers.go | |
| parent | 7fc98da709f9582bc27fad64bd2d718d6b7c5173 (diff) | |
| download | seaweedfs-b3aa2fab9ab4f79da7deb5b70c528cdcbe32dc3f.tar.xz seaweedfs-b3aa2fab9ab4f79da7deb5b70c528cdcbe32dc3f.zip | |
s3: report error to s3 when updating an object but it is already a directory
fix https://github.com/chrislusf/seaweedfs/issues/1545
Diffstat (limited to 'weed/s3api/s3api_object_handlers.go')
| -rw-r--r-- | weed/s3api/s3api_object_handlers.go | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/weed/s3api/s3api_object_handlers.go b/weed/s3api/s3api_object_handlers.go index 93d6db79f..fa628f44e 100644 --- a/weed/s3api/s3api_object_handlers.go +++ b/weed/s3api/s3api_object_handlers.go @@ -5,12 +5,13 @@ import ( "encoding/json" "encoding/xml" "fmt" - "github.com/chrislusf/seaweedfs/weed/s3api/s3err" "io" "io/ioutil" "net/http" "strings" + "github.com/chrislusf/seaweedfs/weed/s3api/s3err" + "github.com/gorilla/mux" "github.com/chrislusf/seaweedfs/weed/glog" @@ -333,7 +334,7 @@ func (s3a *S3ApiServer) putToFiler(r *http.Request, uploadUrl string, dataReader } if ret.Error != "" { glog.Errorf("upload to filer error: %v", ret.Error) - return "", s3err.ErrInternalError + return "", filerErrorToS3Error(ret.Error) } return etag, s3err.ErrNone @@ -359,3 +360,10 @@ func getBucketAndObject(r *http.Request) (bucket, object string) { return } + +func filerErrorToS3Error(errString string) s3err.ErrorCode { + if strings.HasPrefix(errString, "existing ") && strings.HasSuffix(errString, "is a directory") { + return s3err.ErrExistingObjectIsDirectory + } + return s3err.ErrInternalError +} |
