diff --git a/cmd/rpcdaemon/filters/filters.go b/cmd/rpcdaemon/filters/filters.go index 13c4f73b0a532c527ba0ddea7ea63b05beb347c1..d753daffbc6fc0566b7c5e1135f51fdf833b4e82 100644 --- a/cmd/rpcdaemon/filters/filters.go +++ b/cmd/rpcdaemon/filters/filters.go @@ -223,8 +223,11 @@ func (ff *Filters) subscribeToPendingBlocks(ctx context.Context, mining txpool.M func (ff *Filters) HandlePendingBlock(reply *txpool.OnPendingBlockReply) { b := &types.Block{} + if len(reply.RplBlock) == 0 { + return + } if err := rlp.Decode(bytes.NewReader(reply.RplBlock), b); err != nil { - log.Warn("OnNewTx rpc filters, unprocessable payload", "err", err) + log.Warn("OnNewPendingBlock rpc filters, unprocessable payload", "err", err) } ff.mu.Lock() @@ -263,9 +266,12 @@ func (ff *Filters) subscribeToPendingLogs(ctx context.Context, mining txpool.Min } func (ff *Filters) HandlePendingLogs(reply *txpool.OnPendingLogsReply) { + if len(reply.RplLogs) == 0 { + return + } l := []*types.Log{} if err := rlp.Decode(bytes.NewReader(reply.RplLogs), &l); err != nil { - log.Warn("OnNewTx rpc filters, unprocessable payload", "err", err) + log.Warn("OnNewPendingLogs rpc filters, unprocessable payload", "err", err) } ff.mu.RLock() @@ -339,7 +345,10 @@ func (ff *Filters) OnNewEvent(event *remote.SubscribeReply) { case remote.Event_HEADER: payload := event.Data var header types.Header + if len(payload) == 0 { + return + } err := rlp.Decode(bytes.NewReader(payload), &header) if err != nil { // ignoring what we can't unmarshal @@ -386,6 +395,9 @@ func (ff *Filters) OnNewTx(reply *txpool.OnAddReply) { txs := make([]types.Transaction, len(reply.RplTxs)) for i, rlpTx := range reply.RplTxs { var decodeErr error + if len(rlpTx) == 0 { + continue + } s := rlp.NewStream(bytes.NewReader(rlpTx), uint64(len(rlpTx))) txs[i], decodeErr = types.DecodeTransaction(s) if decodeErr != nil { diff --git a/go.mod b/go.mod index 91bb5f715018e3e291a7226a96150678beb4e699..ba06a94c53e0c3834ee8973433185c7d64f9bf96 100644 --- a/go.mod +++ b/go.mod @@ -36,7 +36,7 @@ require ( github.com/json-iterator/go v1.1.12 github.com/julienschmidt/httprouter v1.3.0 github.com/kevinburke/go-bindata v3.21.0+incompatible - github.com/ledgerwatch/erigon-lib v0.0.0-20211106103131-8c7f3a4cf4b1 + github.com/ledgerwatch/erigon-lib v0.0.0-20211107020730-8bf610171cf6 github.com/ledgerwatch/log/v3 v3.4.0 github.com/ledgerwatch/secp256k1 v1.0.0 github.com/logrusorgru/aurora/v3 v3.0.0 diff --git a/go.sum b/go.sum index 525ca717f6f9b34539c345112ea497caa44980f2..025e52dd97c50b3ee4ab265272ea94a2384524e4 100644 --- a/go.sum +++ b/go.sum @@ -497,8 +497,8 @@ github.com/kylelemons/godebug v0.0.0-20170224010052-a616ab194758 h1:0D5M2HQSGD3P github.com/kylelemons/godebug v0.0.0-20170224010052-a616ab194758/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= github.com/leanovate/gopter v0.2.9 h1:fQjYxZaynp97ozCzfOyOuAGOU4aU/z37zf/tOujFk7c= github.com/leanovate/gopter v0.2.9/go.mod h1:U2L/78B+KVFIx2VmW6onHJQzXtFb+p5y3y2Sh+Jxxv8= -github.com/ledgerwatch/erigon-lib v0.0.0-20211106103131-8c7f3a4cf4b1 h1:UNN0EjYfZ1lDi6jj5BQDzlCabi3/e/aym5tvOltPqu4= -github.com/ledgerwatch/erigon-lib v0.0.0-20211106103131-8c7f3a4cf4b1/go.mod h1:CuEZROm43MykZT5CjCj02jw0FOwaDl8Nh+PZkTEGopg= +github.com/ledgerwatch/erigon-lib v0.0.0-20211107020730-8bf610171cf6 h1:uDjCJqjTFg2dI+AjPon7kcD5vC/QO0toPt+DknREE98= +github.com/ledgerwatch/erigon-lib v0.0.0-20211107020730-8bf610171cf6/go.mod h1:CuEZROm43MykZT5CjCj02jw0FOwaDl8Nh+PZkTEGopg= github.com/ledgerwatch/log/v3 v3.4.0 h1:SEIOcv5a2zkG3PmoT5jeTU9m/0nEUv0BJS5bzsjwKCI= github.com/ledgerwatch/log/v3 v3.4.0/go.mod h1:VXcz6Ssn6XEeU92dCMc39/g1F0OYAjw1Mt+dGP5DjXY= github.com/ledgerwatch/secp256k1 v1.0.0 h1:Usvz87YoTG0uePIV8woOof5cQnLXGYa162rFf3YnwaQ=