diff --git a/internal/agent/controller/app/server.go b/internal/agent/controller/app/server.go index 2da9395..248ad72 100644 --- a/internal/agent/controller/app/server.go +++ b/internal/agent/controller/app/server.go @@ -35,12 +35,15 @@ type Server struct { } func (s *Server) Start(ctx context.Context, addr string) (err error) { - if s.server != nil { + if s.Running() { if err := s.Stop(); err != nil { return errors.WithStack(err) } } + s.serverMutex.Lock() + defer s.serverMutex.Unlock() + router := chi.NewRouter() router.Use(middleware.Logger) @@ -85,9 +88,7 @@ func (s *Server) Start(ctx context.Context, addr string) (err error) { } }() - s.serverMutex.Lock() s.server = server - s.serverMutex.Unlock() return nil } @@ -100,20 +101,25 @@ func (s *Server) Running() bool { } func (s *Server) Stop() error { + if !s.Running() { + return nil + } + + s.serverMutex.Lock() + defer s.serverMutex.Unlock() + if s.server == nil { return nil } - defer func() { - s.serverMutex.Lock() - s.server = nil - s.serverMutex.Unlock() - }() - if err := s.server.Close(); err != nil { + s.server = nil + return errors.WithStack(err) } + s.server = nil + return nil }