aboutsummaryrefslogtreecommitdiff
path: root/weed/s3api/s3api_object_handlers.go
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2020-10-20 10:25:16 -0700
committerChris Lu <chris.lu@gmail.com>2020-10-20 10:25:16 -0700
commitb3aa2fab9ab4f79da7deb5b70c528cdcbe32dc3f (patch)
treef857f94d6b45045827727dee330da5cbbb6b4d61 /weed/s3api/s3api_object_handlers.go
parent7fc98da709f9582bc27fad64bd2d718d6b7c5173 (diff)
downloadseaweedfs-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.go12
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
+}