close SubMany channel when all underlying subscriptions die.

This commit is contained in:
fiatjaf
2023-05-30 16:11:33 -03:00
parent a2941876e3
commit 19d96e3566

View File

@@ -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))
}