From ca22fafdd76eedf2198a8f53c81c1d520c69930b Mon Sep 17 00:00:00 2001 From: aler9 <46489434+aler9@users.noreply.github.com> Date: Thu, 3 Sep 2020 16:02:58 +0200 Subject: [PATCH] fix race condition --- main.go | 2 +- path.go | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/main.go b/main.go index e9b136ac..64608953 100644 --- a/main.go +++ b/main.go @@ -350,7 +350,7 @@ outer: }() for _, p := range p.paths { - p.onClose() + p.onClose(true) } p.serverRtsp.close() diff --git a/path.go b/path.go index 0d921d62..b006ef9c 100644 --- a/path.go +++ b/path.go @@ -78,7 +78,7 @@ func (pa *path) onInit() { } } -func (pa *path) onClose() { +func (pa *path) onClose(wait bool) { if pa.source != nil { close(pa.source.terminate) <-pa.source.done @@ -104,6 +104,10 @@ func (pa *path) onClose() { c.describe <- describeRes{nil, fmt.Errorf("publisher of path '%s' has timed out", pa.name)} } else { c.close() + + if wait { + <- c.done + } } } } @@ -175,7 +179,7 @@ func (pa *path) onCheck() { if !pa.permanent && pa.publisher == nil && !pa.hasClients() { - pa.onClose() + pa.onClose(false) delete(pa.p.paths, pa.name) } }