diff --git a/cmd/api-headers.go b/cmd/api-headers.go index 7a7b6b320..4eed6367d 100644 --- a/cmd/api-headers.go +++ b/cmd/api-headers.go @@ -115,10 +115,11 @@ func setObjectHeaders(w http.ResponseWriter, objInfo ObjectInfo, rs *HTTPRangeSp } // Set tag count if object has tags - tags, _ := url.ParseQuery(objInfo.UserTags) - tagCount := len(tags) - if tagCount > 0 { - w.Header()[xhttp.AmzTagCount] = []string{strconv.Itoa(tagCount)} + if len(objInfo.UserTags) > 0 { + tags, _ := url.ParseQuery(objInfo.UserTags) + if len(tags) > 0 { + w.Header()[xhttp.AmzTagCount] = []string{strconv.Itoa(len(tags))} + } } // Set all other user defined metadata. diff --git a/cmd/erasure-object.go b/cmd/erasure-object.go index 5a9a2d1c0..2e899db39 100644 --- a/cmd/erasure-object.go +++ b/cmd/erasure-object.go @@ -360,28 +360,10 @@ func (er erasureObjects) getObjectFileInfo(ctx context.Context, bucket, object s readQuorum, _, err := objectQuorumFromMeta(ctx, er, metaArr, errs) if err != nil { - readQuorum = len(metaArr) / 2 + return fi, nil, nil, err } if reducedErr := reduceReadQuorumErrs(ctx, errs, objectOpIgnoredErrs, readQuorum); reducedErr != nil { - if reducedErr == errErasureReadQuorum { - if _, ok := isObjectDangling(metaArr, errs, nil); ok { - reducedErr = errFileNotFound - if opts.VersionID != "" { - reducedErr = errFileVersionNotFound - } - // Remove the dangling object only when: - // - This is a non versioned bucket - // - This is a versioned bucket and the version ID is passed, the reason - // is that it is hard to pick that particular version that is dangling - if !opts.Versioned || opts.VersionID != "" { - er.deleteObjectVersion(ctx, bucket, object, 1, FileInfo{ - Name: object, - VersionID: opts.VersionID, - }) - } - } - } return fi, nil, nil, toObjectErr(reducedErr, bucket, object) } diff --git a/cmd/rest/client.go b/cmd/rest/client.go index 0392520ce..de87a1a99 100644 --- a/cmd/rest/client.go +++ b/cmd/rest/client.go @@ -109,7 +109,7 @@ func (c *Client) Call(ctx context.Context, method string, values url.Values, bod if err != nil { return nil, &NetworkError{err} } - req.Header.Set("Authorization", "Bearer "+c.newAuthToken(req.URL.Query().Encode())) + req.Header.Set("Authorization", "Bearer "+c.newAuthToken(req.URL.RawQuery)) req.Header.Set("X-Minio-Time", time.Now().UTC().Format(time.RFC3339)) if length > 0 { req.ContentLength = length diff --git a/cmd/storage-rest-server.go b/cmd/storage-rest-server.go index 014e8fdac..947411923 100644 --- a/cmd/storage-rest-server.go +++ b/cmd/storage-rest-server.go @@ -81,7 +81,7 @@ func storageServerRequestValidate(r *http.Request) error { return errAuthentication } - if claims.Audience != r.URL.Query().Encode() { + if claims.Audience != r.URL.RawQuery { return errAuthentication }