diff --git a/registry/config.go b/registry/config.go index b1e3afe36c..84b0a63ad2 100644 --- a/registry/config.go +++ b/registry/config.go @@ -330,8 +330,8 @@ func ValidateMirror(val string) (string, error) { if uri.Scheme != "http" && uri.Scheme != "https" { return "", invalidParamf("invalid mirror: unsupported scheme %q in %q", uri.Scheme, uri) } - if (uri.Path != "" && uri.Path != "/") || uri.RawQuery != "" || uri.Fragment != "" { - return "", invalidParamf("invalid mirror: path, query, or fragment at end of the URI %q", uri) + if uri.RawQuery != "" || uri.Fragment != "" { + return "", invalidParamf("invalid mirror: query or fragment at end of the URI %q", uri) } if uri.User != nil { // strip password from output diff --git a/registry/config_test.go b/registry/config_test.go index 77f799df96..f68cfc61b2 100644 --- a/registry/config_test.go +++ b/registry/config_test.go @@ -142,21 +142,21 @@ func TestValidateMirror(t *testing.T) { "https://127.0.0.1", "http://127.0.0.1:5000", "https://127.0.0.1:5000", + "http://mirror-1.example.com/v1/", + "https://mirror-1.example.com/v1/", } invalid := []string{ "!invalid!://%as%", "ftp://mirror-1.example.com", "http://mirror-1.example.com/?q=foo", - "http://mirror-1.example.com/v1/", "http://mirror-1.example.com/v1/?q=foo", "http://mirror-1.example.com/v1/?q=foo#frag", "http://mirror-1.example.com?q=foo", "https://mirror-1.example.com#frag", "https://mirror-1.example.com/#frag", "http://foo:bar@mirror-1.example.com/", - "https://mirror-1.example.com/v1/", - "https://mirror-1.example.com/v1/#", + "https://mirror-1.example.com/v1/#frag", "https://mirror-1.example.com?q", }