From f9d14252dc91ca929c2facbeb7da441d419fe7ab Mon Sep 17 00:00:00 2001 From: patriceckhart Date: Wed, 20 May 2026 20:31:13 +0200 Subject: [PATCH] Fix swarm inbox listener close race --- internal/swarm/inbox.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/internal/swarm/inbox.go b/internal/swarm/inbox.go index 7092edb..6d78d73 100644 --- a/internal/swarm/inbox.go +++ b/internal/swarm/inbox.go @@ -162,6 +162,7 @@ type Listener struct { active net.Conn out chan string done chan struct{} + wg sync.WaitGroup } // Listen creates the socket at path and starts accepting. The @@ -215,7 +216,10 @@ func (l *Listener) Close() error { } func (l *Listener) acceptLoop() { - defer close(l.out) + defer func() { + l.wg.Wait() + close(l.out) + }() for { c, err := l.ln.Accept() if err != nil { @@ -234,7 +238,11 @@ func (l *Listener) acceptLoop() { } l.active = c l.mu.Unlock() - go l.readLoop(c) + l.wg.Add(1) + go func() { + defer l.wg.Done() + l.readLoop(c) + }() } }