From af9891b2b4c1f954ab9345370f33386554a45157 Mon Sep 17 00:00:00 2001 From: JONNALAGADDA Srinivas Date: Sat, 22 Feb 2025 08:59:19 +0530 Subject: [PATCH] Fix a potential panic in `Server.GetTasks()` Keep the mutex locked while copying task names. --- server.go | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/server.go b/server.go index 9933256..2c1f4d2 100644 --- a/server.go +++ b/server.go @@ -146,16 +146,11 @@ func NewServer(o ServerOpts) (*Server, error) { // GetTasks() returns a list of all tasks registered with the server. func (s *Server) GetTasks() []string { s.p.RLock() - tasks := s.tasks - s.p.RUnlock() + defer s.p.RUnlock() - var ( - t = make([]string, len(tasks)) - i = 0 - ) - for k := range tasks { - t[i] = k - i++ + t := make([]string, 0, len(s.tasks)) + for name := range s.tasks { + t = append(t, name) } return t