diff --git a/src/main/java/org/qora/network/Network.java b/src/main/java/org/qora/network/Network.java index 59d191de..135002b0 100644 --- a/src/main/java/org/qora/network/Network.java +++ b/src/main/java/org/qora/network/Network.java @@ -329,7 +329,7 @@ public class Network extends Thread { // we last managed to connect over a week ago final long now = NTP.getTime(); Predicate isNotOldPeer = peerData -> { - if (peerData.getLastAttempted() == null || peerData.getLastAttempted() > now - OLD_PEER_ATTEMPTED_PERIOD) + if (peerData.getLastAttempted() == null || peerData.getLastAttempted() < now - OLD_PEER_ATTEMPTED_PERIOD) return true; if (peerData.getLastConnected() == null || peerData.getLastConnected() > now - OLD_PEER_CONNECTION_PERIOD) @@ -340,6 +340,16 @@ public class Network extends Thread { peers.removeIf(isNotOldPeer); + // Don't consider already connected peers (simple address match) + Predicate isConnectedPeer = peerData -> { + PeerAddress peerAddress = peerData.getAddress(); + return this.connectedPeers.stream().anyMatch(peer -> peer.getPeerData().getAddress().equals(peerAddress)); + }; + + synchronized (this.connectedPeers) { + peers.removeIf(isConnectedPeer); + } + for (PeerData peerData : peers) { LOGGER.debug(String.format("Deleting old peer %s from repository", peerData.getAddress().toString())); repository.getNetworkRepository().delete(peerData.getAddress());