From 7d1b16fbcdcd624bcc98662901e96a43b5420be2 Mon Sep 17 00:00:00 2001 From: Konstantin Lebedev <9497591+kmlebedev@users.noreply.github.com> Date: Sat, 16 May 2026 01:12:55 +0500 Subject: [PATCH] fix: ListBucketsHandler for pathStyleDomains (#9510) --- weed/s3api/s3api_server.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/weed/s3api/s3api_server.go b/weed/s3api/s3api_server.go index 18f141c27..6d7341a98 100644 --- a/weed/s3api/s3api_server.go +++ b/weed/s3api/s3api_server.go @@ -102,8 +102,8 @@ type S3ApiServer struct { // is nil in this commit; a follow-up wires in an in-memory chunk cache. readerCache *filer.ReaderCache - versionsHealQueue *versionsHealQueue - versionsReconcilerStop func() + versionsHealQueue *versionsHealQueue + versionsReconcilerStop func() } type objectWriteLock interface { @@ -673,6 +673,10 @@ func (s3a *S3ApiServer) registerRouter(router *mux.Router) { // Register path-style domains for _, domain := range pathStyleDomains { routers = append(routers, apiRouter.Host(domain).PathPrefix("/{bucket}").Subrouter()) + apiRouter.Host(domain). + Methods(http.MethodGet). + Path("/"). + HandlerFunc(track(s3a.iam.Auth(s3a.ListBucketsHandler, ACTION_LIST), "LIST")) } // Register virtual-host style domains @@ -680,8 +684,9 @@ func (s3a *S3ApiServer) registerRouter(router *mux.Router) { routers = append(routers, apiRouter.Host( fmt.Sprintf("%s.%s", "{bucket:.+}", virtualHost)).Subrouter()) } + } else { + routers = append(routers, apiRouter.PathPrefix("/{bucket}").Subrouter()) } - routers = append(routers, apiRouter.PathPrefix("/{bucket}").Subrouter()) // Get CORS middleware instance with caching corsMiddleware := s3a.getCORSMiddleware()