eth/protocols/eth: update handler

This commit is contained in:
Felix Lange 2025-04-15 14:18:49 +02:00
parent a9840b8fc5
commit 00846fbfb4

View file

@ -414,11 +414,12 @@ func handleReceipts68(backend Backend, msg Decoder, peer *Peer) error {
func handleReceipts69(backend Backend, msg Decoder, peer *Peer) error { func handleReceipts69(backend Backend, msg Decoder, peer *Peer) error {
// A batch of receipts arrived to one of our previous requests // A batch of receipts arrived to one of our previous requests
res := new(ReceiptsPacket69) var res ReceiptsPacket69
if err := msg.Decode(res); err != nil { if err := msg.Decode(&res); err != nil {
return err return err
} }
// only use one buffer // Assign temporary hashing buffer to each list item, the same buffer is shared
// between all receipt list instances.
buffers := new(receiptListBuffers) buffers := new(receiptListBuffers)
for i := range res.List { for i := range res.List {
res.List[i].buf = buffers res.List[i].buf = buffers
@ -426,15 +427,16 @@ func handleReceipts69(backend Backend, msg Decoder, peer *Peer) error {
metadata := func() interface{} { metadata := func() interface{} {
hasher := trie.NewStackTrie(nil) hasher := trie.NewStackTrie(nil)
hashes := make([]common.Hash, len(res.List)) hashes := make([]common.Hash, len(res.List))
for i, rl := range res.List { for i := range res.List {
hashes[i] = types.DeriveSha(&rl, hasher) hashes[i] = types.DeriveSha(&res.List[i], hasher)
} }
return hashes return hashes
} }
// TODO this can probably be made 0-alloc. // TODO this can probably be made 0-alloc.
var enc ReceiptsRLPResponse var enc ReceiptsRLPResponse
for _, blockReceipts := range res.List { for i := range res.List {
enc = append(enc, blockReceipts.toStorageReceiptsRLP()) enc = append(enc, res.List[i].toStorageReceiptsRLP())
} }
return peer.dispatchResponse(&Response{ return peer.dispatchResponse(&Response{
id: res.RequestId, id: res.RequestId,