From a9ff21278cdcb2635a35c30199d927a6b8e889a8 Mon Sep 17 00:00:00 2001 From: aler9 <46489434+aler9@users.noreply.github.com> Date: Sat, 20 Mar 2021 18:45:09 +0100 Subject: [PATCH] fix freeze during server shutdown --- internal/clientman/clientman.go | 11 ++++++++++- internal/path/path.go | 2 -- 2 files changed, 10 insertions(+), 3 deletions(-) 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) } }