Skip to content

Commit 415e1cf

Browse files
author
cuixiaotian
committed
fix post policy bug
1 parent 70fef7c commit 415e1cf

File tree

5 files changed

+151
-106
lines changed

5 files changed

+151
-106
lines changed

api/handler-utils.go

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,14 +75,20 @@ func extractMetadataFromHeader(header http.Header) map[string]string {
7575
metadata := make(map[string]string)
7676
// Save standard supported headers.
7777
for _, supportedHeader := range supportedHeaders {
78-
if h := header.Get(http.CanonicalHeaderKey(supportedHeader)); h != "" {
79-
metadata[http.CanonicalHeaderKey(supportedHeader)] = h
78+
if value, ok := header[http.CanonicalHeaderKey(supportedHeader)]; ok {
79+
metadata[http.CanonicalHeaderKey(supportedHeader)] = value[0]
80+
} else if value, ok := header[supportedHeader]; ok {
81+
metadata[supportedHeader] = value[0]
8082
}
8183
}
8284
// Go through all other headers for any additional headers that needs to be saved.
8385
for key := range header {
8486
if strings.HasPrefix(strings.ToLower(key), "x-amz-meta-") {
85-
metadata[key] = header.Get(key)
87+
value, ok := header[key]
88+
if ok {
89+
metadata[key] = strings.Join(value, ",")
90+
break
91+
}
8692
}
8793
}
8894
// Return.

api/log-replacer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ func (r *replacer) getSubstitution(key string) string {
271271
return objectInfo.StorageClass.ToString()
272272
case "{target_storage_class}":
273273
if r.request.Header.Get("X-Amz-Copy-Source") != "" && r.request.Header.Get("X-Amz-Metadata-Directive") != "" {
274-
storageClassFromHeader, err := getStorageClassFromHeader(r.request)
274+
storageClassFromHeader, err := getStorageClassFromHeader(r.request.Header)
275275
if err != nil {
276276
return "-"
277277
}

api/object-handlers.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ func setGetRespHeaders(w http.ResponseWriter, reqParams url.Values) {
5858
}
5959
}
6060

61-
func getStorageClassFromHeader(r *http.Request) (meta.StorageClass, error) {
62-
storageClassStr := r.Header.Get("X-Amz-Storage-Class")
61+
func getStorageClassFromHeader(header http.Header) (meta.StorageClass, error) {
62+
storageClassStr := header.Get("X-Amz-Storage-Class")
6363

6464
if storageClassStr != "" {
6565
helper.Logger.Info("Get storage class header:", storageClassStr)
@@ -743,7 +743,7 @@ func (api ObjectAPIHandlers) PutObjectHandler(w http.ResponseWriter, r *http.Req
743743
return
744744
}
745745

746-
storageClass, err := getStorageClassFromHeader(r)
746+
storageClass, err := getStorageClassFromHeader(r.Header)
747747
if err != nil {
748748
WriteErrorResponse(w, r, err)
749749
return
@@ -905,7 +905,7 @@ func (api ObjectAPIHandlers) AppendObjectHandler(w http.ResponseWriter, r *http.
905905
return
906906
}
907907

908-
storageClass, err := getStorageClassFromHeader(r)
908+
storageClass, err := getStorageClassFromHeader(r.Header)
909909
if err != nil {
910910
WriteErrorResponse(w, r, err)
911911
return
@@ -1253,7 +1253,7 @@ func (api ObjectAPIHandlers) NewMultipartUploadHandler(w http.ResponseWriter, r
12531253
}
12541254
}
12551255

1256-
storageClass, err := getStorageClassFromHeader(r)
1256+
storageClass, err := getStorageClassFromHeader(r.Header)
12571257
if err != nil {
12581258
WriteErrorResponse(w, r, err)
12591259
return
@@ -1867,7 +1867,7 @@ func (api ObjectAPIHandlers) PostObjectHandler(w http.ResponseWriter, r *http.Re
18671867
return
18681868
}
18691869

1870-
if err = signature.CheckPostPolicy(formValues, postPolicyType); err != nil {
1870+
if err = signature.CheckPostPolicy(formValues); err != nil {
18711871
WriteErrorResponse(w, r, err)
18721872
return
18731873
}
@@ -1882,7 +1882,7 @@ func (api ObjectAPIHandlers) PostObjectHandler(w http.ResponseWriter, r *http.Re
18821882
metadata := extractMetadataFromHeader(headerfiedFormValues)
18831883

18841884
var acl Acl
1885-
acl.CannedAcl = headerfiedFormValues.Get("acl")
1885+
acl.CannedAcl = headerfiedFormValues.Get("Acl")
18861886
if acl.CannedAcl == "" {
18871887
acl.CannedAcl = "private"
18881888
}
@@ -1898,7 +1898,7 @@ func (api ObjectAPIHandlers) PostObjectHandler(w http.ResponseWriter, r *http.Re
18981898
return
18991899
}
19001900

1901-
storageClass, err := getStorageClassFromHeader(r)
1901+
storageClass, err := getStorageClassFromHeader(headerfiedFormValues)
19021902
if err != nil {
19031903
WriteErrorResponse(w, r, err)
19041904
return

0 commit comments

Comments
 (0)