summaryrefslogtreecommitdiff
path: root/bucket-cache.go
diff options
context:
space:
mode:
Diffstat (limited to 'bucket-cache.go')
-rw-r--r--bucket-cache.go33
1 files changed, 25 insertions, 8 deletions
diff --git a/bucket-cache.go b/bucket-cache.go
index cac7ad7..7ba6cbb 100644
--- a/bucket-cache.go
+++ b/bucket-cache.go
@@ -1,6 +1,6 @@
/*
- * Minio Go Library for Amazon S3 Compatible Cloud Storage
- * Copyright 2015-2017 Minio, Inc.
+ * MinIO Go Library for Amazon S3 Compatible Cloud Storage
+ * Copyright 2015-2017 MinIO, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -18,14 +18,15 @@
package minio
import (
+ "net"
"net/http"
"net/url"
"path"
"sync"
- "github.com/minio/minio-go/pkg/credentials"
- "github.com/minio/minio-go/pkg/s3signer"
- "github.com/minio/minio-go/pkg/s3utils"
+ "github.com/minio/minio-go/v6/pkg/credentials"
+ "github.com/minio/minio-go/v6/pkg/s3signer"
+ "github.com/minio/minio-go/v6/pkg/s3utils"
)
// bucketLocationCache - Provides simple mechanism to hold bucket
@@ -123,8 +124,16 @@ func processBucketLocationResponse(resp *http.Response, bucketName string) (buck
// For access denied error, it could be an anonymous
// request. Move forward and let the top level callers
// succeed if possible based on their policy.
- if errResp.Code == "AccessDenied" {
- return "us-east-1", nil
+ switch errResp.Code {
+ case "AuthorizationHeaderMalformed":
+ fallthrough
+ case "InvalidRegion":
+ fallthrough
+ case "AccessDenied":
+ if errResp.Region == "" {
+ return "us-east-1", nil
+ }
+ return errResp.Region, nil
}
return "", err
}
@@ -161,7 +170,15 @@ func (c Client) getBucketLocationRequest(bucketName string) (*http.Request, erro
urlValues.Set("location", "")
// Set get bucket location always as path style.
- targetURL := c.endpointURL
+ targetURL := *c.endpointURL
+
+ // as it works in makeTargetURL method from api.go file
+ if h, p, err := net.SplitHostPort(targetURL.Host); err == nil {
+ if targetURL.Scheme == "http" && p == "80" || targetURL.Scheme == "https" && p == "443" {
+ targetURL.Host = h
+ }
+ }
+
targetURL.Path = path.Join(bucketName, "") + "/"
targetURL.RawQuery = urlValues.Encode()