From 90cdffa06761a9330aa4397caa3ca165906f74b8 Mon Sep 17 00:00:00 2001 From: Anton Kaliaev Date: Sun, 10 Dec 2017 11:29:36 -0600 Subject: [PATCH] fixes after my own review (Refs #945) --- rpc/client/httpclient.go | 2 ++ rpc/core/events.go | 4 ---- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/rpc/client/httpclient.go b/rpc/client/httpclient.go index fff274be..2ecfa795 100644 --- a/rpc/client/httpclient.go +++ b/rpc/client/httpclient.go @@ -323,6 +323,8 @@ func (w *WSEvents) eventListener() { w.Logger.Error("failed to unmarshal response", "err", err) continue } + // NOTE: writing also happens inside mutex so we can't close a channel in + // Unsubscribe/UnsubscribeAll. w.mtx.RLock() if ch, ok := w.subscriptions[result.Query]; ok { ch <- result.Data diff --git a/rpc/core/events.go b/rpc/core/events.go index 840b971d..538134b0 100644 --- a/rpc/core/events.go +++ b/rpc/core/events.go @@ -50,10 +50,6 @@ func Subscribe(wsCtx rpctypes.WSRPCContext, query string) (*ctypes.ResultSubscri ctx, cancel := context.WithTimeout(context.Background(), subscribeTimeout) defer cancel() ch := make(chan interface{}) - es := wsCtx.GetEventSubscriber() - if es == nil { - es = eventBus - } err = eventBusFor(wsCtx).Subscribe(ctx, addr, q, ch) if err != nil { return nil, err