Make PutObject a nop for an object which ends with "/" and size is '0' (#3603)

This helps majority of S3 compatible applications while not returning
an error upon directory create request.

Fixes #2965
This commit is contained in:
Harshavardhana
2017-01-20 16:33:01 -08:00
committed by GitHub
parent c3f7d1026f
commit 51fa4f7fe3
7 changed files with 100 additions and 21 deletions

View File

@@ -542,6 +542,12 @@ func (fs fsObjects) GetObjectInfo(bucket, object string) (ObjectInfo, error) {
// Additionally writes `fs.json` which carries the necessary metadata
// for future object operations.
func (fs fsObjects) PutObject(bucket string, object string, size int64, data io.Reader, metadata map[string]string, sha256sum string) (objInfo ObjectInfo, err error) {
// This is a special case with size as '0' and object ends with
// a slash separator, we treat it like a valid operation and
// return success.
if isObjectDir(object, size) {
return dirObjectInfo(bucket, object, size, metadata), nil
}
if err = checkPutObjectArgs(bucket, object, fs); err != nil {
return ObjectInfo{}, err
}