From cae622b2fa283f964c5add1e487e8f98499785fa Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 3 Jul 2025 11:34:27 -0400 Subject: [PATCH 1/2] ci: sync golangci-lint config (#708) Co-authored-by: aymanbagabas <3187948+aymanbagabas@users.noreply.github.com> --- .golangci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.golangci.yml b/.golangci.yml index be61d89ba130fbb50371386e01017eab20854930..4fac29c26d828a7aed03ddc2b8b0a469c0a85a2d 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -7,7 +7,6 @@ linters: - exhaustive - goconst - godot - - godox - gomoddirectives - goprintffuncname - gosec From 3f646c66d693c88692d0bebd4243349ddb515ed8 Mon Sep 17 00:00:00 2001 From: Ayman Bagabas Date: Thu, 3 Jul 2025 11:41:32 -0400 Subject: [PATCH 2/2] fix(daemon): mutex for listeners --- pkg/daemon/daemon.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkg/daemon/daemon.go b/pkg/daemon/daemon.go index bbcdaa52bf3934d528a5311debc114b5f5bfe687..3afe5e766b7765fb78321e6d5e80dad1f65e65b4 100644 --- a/pkg/daemon/daemon.go +++ b/pkg/daemon/daemon.go @@ -55,6 +55,7 @@ type GitDaemon struct { logger *log.Logger done atomic.Bool // indicates if the server has been closed listeners []net.Listener + liMu sync.Mutex } // NewDaemon returns a new Git daemon. @@ -93,7 +94,9 @@ func (d *GitDaemon) Serve(listener net.Listener) error { d.wg.Add(1) defer d.wg.Done() + d.liMu.Lock() d.listeners = append(d.listeners, listener) + d.liMu.Unlock() var tempDelay time.Duration for { @@ -324,12 +327,14 @@ func (d *GitDaemon) closeListener() error { return ErrServerClosed } var err error + d.liMu.Lock() for _, l := range d.listeners { if err = l.Close(); err != nil { err = errors.Join(err, fmt.Errorf("close listener %s: %w", l.Addr(), err)) } } d.listeners = d.listeners[:0] + d.liMu.Unlock() d.once.Do(func() { d.done.Store(true) close(d.finished)