Skip to content

Commit 0b63ab1

Browse files
estensenfjl
authored andcommitted
p2p: use errors.Is for error comparison (ethereum#24882)
Co-authored-by: Felix Lange <[email protected]>
1 parent 783ffee commit 0b63ab1

File tree

9 files changed

+24
-13
lines changed

9 files changed

+24
-13
lines changed

p2p/discover/lookup.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package discover
1818

1919
import (
2020
"context"
21+
"errors"
2122
"time"
2223

2324
"github.com/ethereum/go-ethereum/p2p/enode"
@@ -141,7 +142,7 @@ func (it *lookup) slowdown() {
141142
func (it *lookup) query(n *node, reply chan<- []*node) {
142143
fails := it.tab.db.FindFails(n.ID(), n.IP())
143144
r, err := it.queryfunc(n)
144-
if err == errClosed {
145+
if errors.Is(err, errClosed) {
145146
// Avoid recording failures on shutdown.
146147
reply <- nil
147148
return

p2p/discover/v4_udp.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ func (t *UDPv4) findnode(toid enode.ID, toaddr *net.UDPAddr, target v4wire.Pubke
328328
// enough nodes the reply matcher will time out waiting for the second reply, but
329329
// there's no need for an error in that case.
330330
err := <-rm.errc
331-
if err == errTimeout && rm.reply != nil {
331+
if errors.Is(err, errTimeout) && rm.reply != nil {
332332
err = nil
333333
}
334334
return nodes, err
@@ -526,7 +526,7 @@ func (t *UDPv4) readLoop(unhandled chan<- ReadPacket) {
526526
continue
527527
} else if err != nil {
528528
// Shut down the loop for permament errors.
529-
if err != io.EOF {
529+
if !errors.Is(err, io.EOF) {
530530
t.log.Debug("UDP read error", "err", err)
531531
}
532532
return

p2p/discover/v5_udp.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,7 @@ func (t *UDPv5) lookupWorker(destNode *node, target enode.ID) ([]*node, error) {
305305
)
306306
var r []*enode.Node
307307
r, err = t.findnode(unwrapNode(destNode), dists)
308-
if err == errClosed {
308+
if errors.Is(err, errClosed) {
309309
return nil, err
310310
}
311311
for _, n := range r {
@@ -623,7 +623,7 @@ func (t *UDPv5) readLoop() {
623623
continue
624624
} else if err != nil {
625625
// Shut down the loop for permament errors.
626-
if err != io.EOF {
626+
if !errors.Is(err, io.EOF) {
627627
t.log.Debug("UDP read error", "err", err)
628628
}
629629
return

p2p/discover/v5wire/encoding.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -596,7 +596,7 @@ func (c *Codec) decodeMessage(fromAddr string, head *Header, headerData, msgData
596596
// Try decrypting the message.
597597
key := c.sc.readKey(auth.SrcID, fromAddr)
598598
msg, err := c.decryptMessage(msgData, head.Nonce[:], headerData, key)
599-
if err == errMessageDecrypt {
599+
if errors.Is(err, errMessageDecrypt) {
600600
// It didn't work. Start the handshake since this is an ordinary message packet.
601601
return &Unknown{Nonce: head.Nonce}, nil
602602
}

p2p/dnsdisc/client.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package dnsdisc
1919
import (
2020
"bytes"
2121
"context"
22+
"errors"
2223
"fmt"
2324
"math/rand"
2425
"net"
@@ -204,7 +205,7 @@ func (c *Client) doResolveEntry(ctx context.Context, domain, hash string) (entry
204205
}
205206
for _, txt := range txts {
206207
e, err := parseEntry(txt, c.cfg.ValidSchemes)
207-
if err == errUnknownEntry {
208+
if errors.Is(err, errUnknownEntry) {
208209
continue
209210
}
210211
if !bytes.HasPrefix(crypto.Keccak256([]byte(txt)), wantHash) {
@@ -281,7 +282,7 @@ func (it *randomIterator) nextNode() *enode.Node {
281282
}
282283
n, err := ct.syncRandom(it.ctx)
283284
if err != nil {
284-
if err == it.ctx.Err() {
285+
if errors.Is(err, it.ctx.Err()) {
285286
return nil // context canceled.
286287
}
287288
it.c.cfg.Logger.Debug("Error in DNS random node sync", "tree", ct.loc.domain, "err", err)

p2p/enr/entries.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package enr
1818

1919
import (
20+
"errors"
2021
"fmt"
2122
"io"
2223
"net"
@@ -180,9 +181,16 @@ func (err *KeyError) Error() string {
180181
return fmt.Sprintf("ENR key %q: %v", err.Key, err.Err)
181182
}
182183

184+
func (err *KeyError) Unwrap() error {
185+
return err.Err
186+
}
187+
183188
// IsNotFound reports whether the given error means that a key/value pair is
184189
// missing from a record.
185190
func IsNotFound(err error) bool {
186-
kerr, ok := err.(*KeyError)
187-
return ok && kerr.Err == errNotFound
191+
var ke *KeyError
192+
if errors.As(err, &ke) {
193+
return ke.Err == errNotFound
194+
}
195+
return false
188196
}

p2p/peer.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,7 @@ func (p *Peer) startProtocols(writeStart <-chan struct{}, writeErr chan<- error)
416416
if err == nil {
417417
p.log.Trace(fmt.Sprintf("Protocol %s/%d returned", proto.Name, proto.Version))
418418
err = errProtocolReturned
419-
} else if err != io.EOF {
419+
} else if !errors.Is(err, io.EOF) {
420420
p.log.Trace(fmt.Sprintf("Protocol %s/%d failed", proto.Name, proto.Version), "err", err)
421421
}
422422
p.protoErr <- err

p2p/peer_error.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ func discReasonForError(err error) DiscReason {
103103
if reason, ok := err.(DiscReason); ok {
104104
return reason
105105
}
106-
if err == errProtocolReturned {
106+
if errors.Is(err, errProtocolReturned) {
107107
return DiscQuitting
108108
}
109109
peerError, ok := err.(*peerError)

p2p/simulations/http.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"bytes"
2222
"context"
2323
"encoding/json"
24+
"errors"
2425
"fmt"
2526
"html"
2627
"io"
@@ -559,7 +560,7 @@ func (s *Server) CreateNode(w http.ResponseWriter, req *http.Request) {
559560
config := &adapters.NodeConfig{}
560561

561562
err := json.NewDecoder(req.Body).Decode(config)
562-
if err != nil && err != io.EOF {
563+
if err != nil && !errors.Is(err, io.EOF) {
563564
http.Error(w, err.Error(), http.StatusBadRequest)
564565
return
565566
}

0 commit comments

Comments
 (0)