diff --git a/src/main/java/org/qortal/network/Network.java b/src/main/java/org/qortal/network/Network.java index cf9fe5f0..d1abba8c 100644 --- a/src/main/java/org/qortal/network/Network.java +++ b/src/main/java/org/qortal/network/Network.java @@ -780,6 +780,15 @@ public class Network { private void onHandshakeCompleted(Peer peer) { LOGGER.debug(String.format("Handshake completed with peer %s", peer)); + // Are we already connected to this peer? + Peer existingPeer = getHandshakedPeerWithPublicKey(peer.getPeersPublicKey()); + // NOTE: actual object reference compare, not Peer.equals() + if (existingPeer != peer) { + LOGGER.info(() -> String.format("We already have a connection with peer %s - discarding", peer)); + peer.disconnect("existing connection"); + return; + } + // Make a note that we've successfully completed handshake (and when) peer.getPeerData().setLastConnected(NTP.getTime());