From 666d93338a70914aebde3ed402de811cf4f8630c Mon Sep 17 00:00:00 2001 From: Sam Kleinman Date: Thu, 2 Jun 2022 11:14:25 -0400 Subject: [PATCH] p2p: shed peers from store from other networks (#8678) --- internal/p2p/router.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/internal/p2p/router.go b/internal/p2p/router.go index 267d55a96..8b77541de 100644 --- a/internal/p2p/router.go +++ b/internal/p2p/router.go @@ -720,6 +720,15 @@ func (r *Router) handshakePeer( if err = peerInfo.Validate(); err != nil { return peerInfo, fmt.Errorf("invalid handshake NodeInfo: %w", err) } + + if peerInfo.Network != nodeInfo.Network { + if err := r.peerManager.store.Delete(peerInfo.NodeID); err != nil { + return peerInfo, fmt.Errorf("problem removing peer from store from incorrect network [%s]: %w", peerInfo.Network, err) + } + + return peerInfo, fmt.Errorf("connected to peer from wrong network, %q, removed from peer store", peerInfo.Network) + } + if types.NodeIDFromPubKey(peerKey) != peerInfo.NodeID { return peerInfo, fmt.Errorf("peer's public key did not match its node ID %q (expected %q)", peerInfo.NodeID, types.NodeIDFromPubKey(peerKey)) @@ -728,6 +737,7 @@ func (r *Router) handshakePeer( return peerInfo, fmt.Errorf("expected to connect with peer %q, got %q", expectID, peerInfo.NodeID) } + if err := nodeInfo.CompatibleWith(peerInfo); err != nil { return peerInfo, ErrRejected{ err: err,