diff --git a/CHANGELOG_PENDING.md b/CHANGELOG_PENDING.md index d28c727b9..aebc387f2 100644 --- a/CHANGELOG_PENDING.md +++ b/CHANGELOG_PENDING.md @@ -142,3 +142,4 @@ program](https://hackerone.com/tendermint). efforts of @gchaincl and @ancazamfir) - [p2p] \#4140 `SecretConnection`: use the transcript solely for authentication (i.e. MAC) - [consensus/types] \#4243 fix BenchmarkRoundStateDeepCopy panics (@cuonglm) +- [rpc] \#4256 Pass `outCapacity` to `eventBus#Subscribe` when subscribing using a local client diff --git a/rpc/client/localclient.go b/rpc/client/localclient.go index 95cc879b8..c1d0809a6 100644 --- a/rpc/client/localclient.go +++ b/rpc/client/localclient.go @@ -177,16 +177,22 @@ func (c *Local) Subscribe( if err != nil { return nil, errors.Wrap(err, "failed to parse query") } - sub, err := c.EventBus.Subscribe(ctx, subscriber, q) - if err != nil { - return nil, errors.Wrap(err, "failed to subscribe") - } outCap := 1 if len(outCapacity) > 0 { outCap = outCapacity[0] } + var sub types.Subscription + if outCap > 0 { + sub, err = c.EventBus.Subscribe(ctx, subscriber, q, outCap) + } else { + sub, err = c.EventBus.SubscribeUnbuffered(ctx, subscriber, q) + } + if err != nil { + return nil, errors.Wrap(err, "failed to subscribe") + } + outc := make(chan ctypes.ResultEvent, outCap) go c.eventsRoutine(sub, subscriber, q, outc)