From c655241209b18172aee2129957bbf9f460f563e7 Mon Sep 17 00:00:00 2001
From: Arien Holthuizen <aholthuizen@schubergphilis.com>
Date: Wed, 6 Apr 2016 13:34:14 +0200
Subject: [PATCH] Only check validity of S3 region if not using custom endpoint

Signed-off-by: Arien Holthuizen <aholthuizen@schubergphilis.com>
---
 docs/storage/driver/s3-aws/s3.go | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/docs/storage/driver/s3-aws/s3.go b/docs/storage/driver/s3-aws/s3.go
index 8683f80e..f7facb61 100644
--- a/docs/storage/driver/s3-aws/s3.go
+++ b/docs/storage/driver/s3-aws/s3.go
@@ -136,14 +136,21 @@ func FromParameters(parameters map[string]interface{}) (*Driver, error) {
 		secretKey = ""
 	}
 
+	regionEndpoint := parameters["regionendpoint"]
+	if regionEndpoint == nil {
+		regionEndpoint = ""
+	}
+
 	regionName, ok := parameters["region"]
 	if regionName == nil || fmt.Sprint(regionName) == "" {
 		return nil, fmt.Errorf("No region parameter provided")
 	}
 	region := fmt.Sprint(regionName)
-	_, ok = validRegions[region]
-	if !ok {
-		return nil, fmt.Errorf("Invalid region provided: %v", region)
+	// Don't check the region value if a custom endpoint is provided.
+	if regionEndpoint == "" {
+		if _, ok = validRegions[region]; !ok {
+			return nil, fmt.Errorf("Invalid region provided: %v", region)
+		}
 	}
 
 	bucket := parameters["bucket"]
@@ -151,11 +158,6 @@ func FromParameters(parameters map[string]interface{}) (*Driver, error) {
 		return nil, fmt.Errorf("No bucket parameter provided")
 	}
 
-	regionEndpoint := parameters["regionendpoint"]
-	if regionEndpoint == nil {
-		regionEndpoint = ""
-	}
-
 	encryptBool := false
 	encrypt := parameters["encrypt"]
 	switch encrypt := encrypt.(type) {