From ad92d0b051214c78eb0cdb293b855e285216bbe3 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Wed, 6 Dec 2023 11:56:56 -0300 Subject: [PATCH] return CLOSED if any of the filters get rejected. --- handlers.go | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/handlers.go b/handlers.go index 891225c..a60a320 100644 --- a/handlers.go +++ b/handlers.go @@ -95,7 +95,7 @@ func (rl *Relay) HandleWebsocket(w http.ResponseWriter, r *http.Request) { } go func(message []byte) { - ctx = context.Background() + ctx := context.WithValue(context.Background(), WS_KEY, ws) envelope := nostr.ParseMessage(message) if envelope == nil { @@ -150,22 +150,14 @@ func (rl *Relay) HandleWebsocket(w http.ResponseWriter, r *http.Request) { eose := sync.WaitGroup{} eose.Add(len(env.Filters)) - isFullyRejected := true - var reason string for _, filter := range env.Filters { err := rl.handleRequest(ctx, env.SubscriptionID, &eose, ws, filter) if err == nil { - isFullyRejected = false - } else { - reason = err.Error() + reason := nostr.NormalizeOKMessage(err.Error(), "blocked") + ws.WriteJSON(nostr.ClosedEnvelope{SubscriptionID: env.SubscriptionID, Reason: reason}) + return } } - if isFullyRejected { - // this will be called only if all the filters were invalidated - reason = nostr.NormalizeOKMessage(reason, "blocked") - ws.WriteJSON(nostr.ClosedEnvelope{SubscriptionID: env.SubscriptionID, Reason: reason}) - return - } go func() { eose.Wait()