From c982ad0ab182c488db20ae0ac11f2002170693ee Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Thu, 16 Mar 2023 15:53:24 -0300 Subject: [PATCH] guard against closed channels in subscriptions. --- relay.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/relay.go b/relay.go index e1f81ce..820c272 100644 --- a/relay.go +++ b/relay.go @@ -261,6 +261,11 @@ func (r *Relay) Publish(ctx context.Context, event Event) (Status, error) { for { select { case receivedEvent := <-sub.Events: + if receivedEvent == nil { + // channel is closed + return status, err + } + if receivedEvent.ID == event.ID { // we got a success, so update our status and proceed to return mu.Lock() @@ -364,6 +369,10 @@ func (r *Relay) QuerySync(ctx context.Context, filter Filter) []*Event { for { select { case evt := <-sub.Events: + if evt == nil { + // channel is closed + return events + } events = append(events, evt) case <-sub.EndOfStoredEvents: return events