diff --git a/p2p/metrics.go b/p2p/metrics.go index 1fd0f26db3..e1bfe37ec3 100644 --- a/p2p/metrics.go +++ b/p2p/metrics.go @@ -67,23 +67,21 @@ func markDialError(err error) { if !metrics.Enabled() { return } - if err2 := errors.Unwrap(err); err2 != nil { - err = err2 - } - switch err { - case DiscTooManyPeers: + + switch { + case errors.Is(err, DiscTooManyPeers): dialTooManyPeers.Mark(1) - case DiscAlreadyConnected: + case errors.Is(err, DiscAlreadyConnected): dialAlreadyConnected.Mark(1) - case DiscSelf: + case errors.Is(err, DiscSelf): dialSelf.Mark(1) - case DiscUselessPeer: + case errors.Is(err, DiscUselessPeer): dialUselessPeer.Mark(1) - case DiscUnexpectedIdentity: + case errors.Is(err, DiscUnexpectedIdentity): dialUnexpectedIdentity.Mark(1) - case errEncHandshakeError: + case errors.Is(err, errEncHandshakeError): dialEncHandshakeError.Mark(1) - case errProtoHandshakeError: + case errors.Is(err, errProtoHandshakeError): dialProtoHandshakeError.Mark(1) } } diff --git a/p2p/server.go b/p2p/server.go index c1564352e5..21a14bb5f4 100644 --- a/p2p/server.go +++ b/p2p/server.go @@ -907,7 +907,8 @@ func (srv *Server) setupConn(c *conn, dialDest *enode.Node) error { phs, err := c.doProtoHandshake(srv.ourHandshake) if err != nil { clog.Trace("Failed p2p handshake", "err", err) - return fmt.Errorf("%w: %v", errProtoHandshakeError, err) + //Wrapping both errors for later inspection + return fmt.Errorf("%w: %w", errProtoHandshakeError, err) } if id := c.node.ID(); !bytes.Equal(crypto.Keccak256(phs.ID), id[:]) { clog.Trace("Wrong devp2p handshake identity", "phsid", hex.EncodeToString(phs.ID))