mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-07-26 06:36:43 +00:00
eth/protocols/eth: update handler
This commit is contained in:
parent
a9840b8fc5
commit
00846fbfb4
1 changed files with 9 additions and 7 deletions
|
|
@ -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,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue