From b7028b27f3f68f2dcefc684cc3ba386335eeb89f Mon Sep 17 00:00:00 2001 From: andres-portainer Date: Thu, 1 Feb 2024 10:30:47 -0300 Subject: [PATCH] fix(registry): fix a data race in StartRegistryServer() EE-6654 --- edge/registry/server.go | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/edge/registry/server.go b/edge/registry/server.go index 973b4d2b3..f90028b41 100644 --- a/edge/registry/server.go +++ b/edge/registry/server.go @@ -2,6 +2,7 @@ package registry import ( "errors" + "net" "net/http" "net/url" "strings" @@ -100,10 +101,14 @@ func (handler *Handler) LookupHandler(rw http.ResponseWriter, r *http.Request) * func StartRegistryServer(edgeManager *edge.Manager, awsConfig *agent.AWSConfig) (err error) { log.Info().Msg("starting registry credential server") + l, err := net.Listen("tcp", "127.0.0.1:9005") + if err != nil { + return err + } + h := NewEdgeRegistryHandler(edgeManager, awsConfig) server := &http.Server{ - Addr: "127.0.0.1:9005", WriteTimeout: time.Second * 15, ReadTimeout: time.Second * 15, IdleTimeout: time.Second * 60, @@ -111,9 +116,7 @@ func StartRegistryServer(edgeManager *edge.Manager, awsConfig *agent.AWSConfig) } // run in a goroutine so it doesn't block - go func() { - err = server.ListenAndServe() - }() + go server.Serve(l) - return err + return nil }