diff --git a/internal/clientman/clientman.go b/internal/clientman/clientman.go index 28470a13..8798f355 100644 --- a/internal/clientman/clientman.go +++ b/internal/clientman/clientman.go @@ -198,13 +198,22 @@ outer: } go func() { - for range cm.clientClose { + for { + select { + case _, ok := <-cm.clientClose: + if !ok { + return + } + + case <-cm.pathMan.ClientClose(): + } } }() for c := range cm.clients { c.Close() } + cm.wg.Wait() close(cm.clientClose) diff --git a/internal/path/path.go b/internal/path/path.go index 9393c854..1100940b 100644 --- a/internal/path/path.go +++ b/internal/path/path.go @@ -287,7 +287,6 @@ outer: delete(pa.clients, req.Client) pa.clientsWg.Done() - close(req.Res) case <-pa.terminate: @@ -419,7 +418,6 @@ func (pa *Path) exhaustChannels() { } pa.clientsWg.Done() - close(req.Res) } }