prevent relay queriers that exit before EOSE from locking the QueryEvents() function forever.

This commit is contained in:
fiatjaf
2024-02-21 08:41:20 -03:00
parent a86745ec5f
commit 45c69ddf7f
8 changed files with 44 additions and 10 deletions

View File

@@ -123,9 +123,15 @@ func (ess *ElasticsearchStorage) QueryEvents(ctx context.Context, filter nostr.F
// optimization: get by id
if isGetByID(filter) {
if evts, err := ess.getByID(filter); err == nil {
for _, evt := range evts {
ch <- evt
}
go func() {
for _, evt := range evts {
select {
case ch <- evt:
case <-ctx.Done():
return
}
}
}()
close(ch)
} else {
return nil, fmt.Errorf("error getting by id: %w", err)