s3: fix upload of single files into buckets without create permission
Before this change, attempting to upload a single file into an s3
bucket which did not have create permission gave AccessDenied: Access
Denied error when it tried to create the bucket.
This was masked until e2bf91452a
was
fixed.
This fix marks the bucket as OK if a fetch on an object indicates it
is OK. This stops rclone thinking it has to create the bucket in the
first place.
Fixes #4297
This commit is contained in:
parent
26fb9007da
commit
151f03378f
1 changed files with 6 additions and 0 deletions
|
@ -2033,11 +2033,17 @@ func (o *Object) readMetaData(ctx context.Context) (err error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if awsErr, ok := err.(awserr.RequestFailure); ok {
|
if awsErr, ok := err.(awserr.RequestFailure); ok {
|
||||||
if awsErr.StatusCode() == http.StatusNotFound {
|
if awsErr.StatusCode() == http.StatusNotFound {
|
||||||
|
// NotFound indicates bucket was OK
|
||||||
|
// NoSuchBucket would be returned if bucket was bad
|
||||||
|
if awsErr.Code() == "NotFound" {
|
||||||
|
o.fs.cache.MarkOK(bucket)
|
||||||
|
}
|
||||||
return fs.ErrorObjectNotFound
|
return fs.ErrorObjectNotFound
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
o.fs.cache.MarkOK(bucket)
|
||||||
var size int64
|
var size int64
|
||||||
// Ignore missing Content-Length assuming it is 0
|
// Ignore missing Content-Length assuming it is 0
|
||||||
// Some versions of ceph do this due their apache proxies
|
// Some versions of ceph do this due their apache proxies
|
||||||
|
|
Loading…
Reference in a new issue