From 19d96e3566f9db5e35899486b4576bc9f6c43b46 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Tue, 30 May 2023 16:11:33 -0300 Subject: [PATCH] close SubMany channel when all underlying subscriptions die. --- pool.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pool.go b/pool.go index a217952..a5e710b 100644 --- a/pool.go +++ b/pool.go @@ -60,6 +60,9 @@ func (pool *SimplePool) SubMany( uniqueEvents := make(chan *Event) seenAlready := xsync.NewMapOf[bool]() + pending := xsync.Counter{} + initial := len(urls) + pending.Add(int64(initial)) for _, url := range urls { go func(nm string) { relay, err := pool.EnsureRelay(nm) @@ -78,6 +81,11 @@ func (pool *SimplePool) SubMany( uniqueEvents <- evt } } + + pending.Dec() + if pending.Value() == 0 { + close(uniqueEvents) + } }(NormalizeURL(url)) }