From 36d36fab0bfeb0e91099e852408d0e1ac2e06440 Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Fri, 10 Jul 2020 15:21:32 -0700 Subject: [PATCH] fix: add virtual host style workaround for gorilla/mux issue (#10010) gorilla/mux broke their recent release 1.7.4 which we upgraded to, we need the current workaround to ensure that our regex matches appropriately. An upstream PR is sent, we should remove the workaround once we have a new release. --- cmd/api-router.go | 10 +++++++++- cmd/iam-object-store.go | 12 ++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/cmd/api-router.go b/cmd/api-router.go index 397d6fe75..02c9f9e5d 100644 --- a/cmd/api-router.go +++ b/cmd/api-router.go @@ -84,7 +84,15 @@ func registerAPIRouter(router *mux.Router, encryptionEnabled, allowSSEKMS bool) apiRouter := router.PathPrefix(SlashSeparator).Subrouter() var routers []*mux.Router for _, domainName := range globalDomainNames { - routers = append(routers, apiRouter.Host("{bucket:.+}."+domainName).Subrouter()) + if globalMinioPort == "80" || globalMinioPort == "443" { + // For standard ports its possible, incoming requests + // might not have a port assigned, in such scenarios use + // have wildcard routing. + // FIXME: remove this code once https://github.com/gorilla/mux/pull/579 + // is merged and released upstream, as this entire change can become + // a single line. + routers = append(routers, apiRouter.Host("{bucket:.+}."+domainName).Subrouter()) + } routers = append(routers, apiRouter.Host("{bucket:.+}."+domainName+":{port:.*}").Subrouter()) } routers = append(routers, apiRouter.PathPrefix("/{bucket}").Subrouter()) diff --git a/cmd/iam-object-store.go b/cmd/iam-object-store.go index b27d1ad18..8307300ca 100644 --- a/cmd/iam-object-store.go +++ b/cmd/iam-object-store.go @@ -256,8 +256,7 @@ func (iamOS *IAMObjectStore) loadPolicyDocs(ctx context.Context, m map[string]ia } policyName := item.Item - err := iamOS.loadPolicyDoc(policyName, m) - if err != nil { + if err := iamOS.loadPolicyDoc(policyName, m); err != nil && err != errNoSuchPolicy { return err } } @@ -325,8 +324,7 @@ func (iamOS *IAMObjectStore) loadUsers(ctx context.Context, userType IAMUserType } userName := item.Item - err := iamOS.loadUser(userName, userType, m) - if err != nil { + if err := iamOS.loadUser(userName, userType, m); err != errNoSuchUser { return err } } @@ -353,8 +351,7 @@ func (iamOS *IAMObjectStore) loadGroups(ctx context.Context, m map[string]GroupI } group := item.Item - err := iamOS.loadGroup(group, m) - if err != nil { + if err := iamOS.loadGroup(group, m); err != nil && err != errNoSuchGroup { return err } } @@ -397,8 +394,7 @@ func (iamOS *IAMObjectStore) loadMappedPolicies(ctx context.Context, userType IA policyFile := item.Item userOrGroupName := strings.TrimSuffix(policyFile, ".json") - err := iamOS.loadMappedPolicy(userOrGroupName, userType, isGroup, m) - if err != nil && err != errNoSuchPolicy { + if err := iamOS.loadMappedPolicy(userOrGroupName, userType, isGroup, m); err != nil && err != errNoSuchPolicy { return err } }