Skip to content

Commit

Permalink
eth/protocols/snap, trie: better error-handling (ethereum#23657) (eth…
Browse files Browse the repository at this point in the history
…ereum#582)

Co-authored-by: Martin Holst Swende <martin@swende.se>
  • Loading branch information
unclezoro and holiman committed Nov 24, 2021
1 parent 8ff7d53 commit a3f9e23
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 5 deletions.
2 changes: 1 addition & 1 deletion eth/protocols/snap/handler.go
Expand Up @@ -469,7 +469,7 @@ func handleMessage(backend Backend, peer *Peer) error {
// Storage slots requested, open the storage trie and retrieve from there
account, err := snap.Account(common.BytesToHash(pathset[0]))
loads++ // always account database reads, even for failures
if err != nil {
if err != nil || account == nil {
break
}
stTrie, err := trie.NewSecure(common.BytesToHash(account.Root), triedb)
Expand Down
8 changes: 4 additions & 4 deletions trie/trie.go
Expand Up @@ -174,6 +174,10 @@ func (t *Trie) TryGetNode(path []byte) ([]byte, int, error) {
}

func (t *Trie) tryGetNode(origNode node, path []byte, pos int) (item []byte, newnode node, resolved int, err error) {
// If non-existent path requested, abort
if origNode == nil {
return nil, nil, 0, nil
}
// If we reached the requested path, return the current node
if pos >= len(path) {
// Although we most probably have the original node expanded, encoding
Expand All @@ -193,10 +197,6 @@ func (t *Trie) tryGetNode(origNode node, path []byte, pos int) (item []byte, new
}
// Path still needs to be traversed, descend into children
switch n := (origNode).(type) {
case nil:
// Non-existent path requested, abort
return nil, nil, 0, nil

case valueNode:
// Path prematurely ended, abort
return nil, nil, 0, nil
Expand Down

0 comments on commit a3f9e23

Please sign in to comment.