mirror of
https://github.com/nbd-wtf/go-nostr.git
synced 2025-07-01 02:51:24 +02:00
guard against closed channels in subscriptions.
This commit is contained in:
9
relay.go
9
relay.go
@ -261,6 +261,11 @@ func (r *Relay) Publish(ctx context.Context, event Event) (Status, error) {
|
|||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case receivedEvent := <-sub.Events:
|
case receivedEvent := <-sub.Events:
|
||||||
|
if receivedEvent == nil {
|
||||||
|
// channel is closed
|
||||||
|
return status, err
|
||||||
|
}
|
||||||
|
|
||||||
if receivedEvent.ID == event.ID {
|
if receivedEvent.ID == event.ID {
|
||||||
// we got a success, so update our status and proceed to return
|
// we got a success, so update our status and proceed to return
|
||||||
mu.Lock()
|
mu.Lock()
|
||||||
@ -364,6 +369,10 @@ func (r *Relay) QuerySync(ctx context.Context, filter Filter) []*Event {
|
|||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case evt := <-sub.Events:
|
case evt := <-sub.Events:
|
||||||
|
if evt == nil {
|
||||||
|
// channel is closed
|
||||||
|
return events
|
||||||
|
}
|
||||||
events = append(events, evt)
|
events = append(events, evt)
|
||||||
case <-sub.EndOfStoredEvents:
|
case <-sub.EndOfStoredEvents:
|
||||||
return events
|
return events
|
||||||
|
Reference in New Issue
Block a user