diff --git a/cmd/rpcdaemon/commands/trace_filtering.go b/cmd/rpcdaemon/commands/trace_filtering.go index f91e71104ea11878c3fcb6f1fa21e0dc286c7f91..d09b54727ae06fca7c0e1f4a872a69fc55f82358 100644 --- a/cmd/rpcdaemon/commands/trace_filtering.go +++ b/cmd/rpcdaemon/commands/trace_filtering.go @@ -266,9 +266,7 @@ func (api *TraceAPIImpl) Filter(ctx context.Context, req TraceFilterRequest, str return err } - var stdlibCompatibleJson = jsoniter.ConfigCompatibleWithStandardLibrary.BorrowStream(stream) - defer jsoniter.ConfigCompatibleWithStandardLibrary.ReturnStream(stdlibCompatibleJson) - + var json = jsoniter.ConfigCompatibleWithStandardLibrary stream.WriteArrayStart() first := true // Execute all transactions in picked blocks @@ -324,14 +322,18 @@ func (api *TraceAPIImpl) Filter(ctx context.Context, req TraceFilterRequest, str pt.BlockNumber = &blockNumber pt.TransactionHash = &txHash pt.TransactionPosition = &txPosition + b, err := json.Marshal(pt) + if err != nil { + stream.WriteNil() + return err + } if nSeen > after && nExported < count { if first { first = false } else { stream.WriteMore() } - stdlibCompatibleJson.WriteVal(pt) - stdlibCompatibleJson.Flush() + stream.Write(b) nExported++ } } @@ -352,14 +354,18 @@ func (api *TraceAPIImpl) Filter(ctx context.Context, req TraceFilterRequest, str *tr.BlockNumber = block.NumberU64() tr.Type = "reward" // nolint: goconst tr.TraceAddress = []int{} + b, err := json.Marshal(tr) + if err != nil { + stream.WriteNil() + return err + } if nSeen > after && nExported < count { if first { first = false } else { stream.WriteMore() } - stdlibCompatibleJson.WriteVal(tr) - stdlibCompatibleJson.Flush() + stream.Write(b) nExported++ } } @@ -379,14 +385,18 @@ func (api *TraceAPIImpl) Filter(ctx context.Context, req TraceFilterRequest, str *tr.BlockNumber = block.NumberU64() tr.Type = "reward" // nolint: goconst tr.TraceAddress = []int{} + b, err := json.Marshal(tr) + if err != nil { + stream.WriteNil() + return err + } if nSeen > after && nExported < count { if first { first = false } else { stream.WriteMore() } - stdlibCompatibleJson.WriteVal(tr) - stdlibCompatibleJson.Flush() + stream.Write(b) nExported++ } }