From 0738dbd613230b4a434af7188d3602c6541b9962 Mon Sep 17 00:00:00 2001 From: CalDescent Date: Fri, 11 Mar 2022 12:58:11 +0000 Subject: [PATCH] Avoid direct access to this.connectedPeers, as we need to use the immutable copy. --- src/main/java/org/qortal/network/Network.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/qortal/network/Network.java b/src/main/java/org/qortal/network/Network.java index ea7a09f0..c3f03804 100644 --- a/src/main/java/org/qortal/network/Network.java +++ b/src/main/java/org/qortal/network/Network.java @@ -302,7 +302,7 @@ public class Network { } // Check if we're already connected to and handshaked with this peer - Peer connectedPeer = this.connectedPeers.stream() + Peer connectedPeer = this.getConnectedPeers().stream() .filter(p -> p.getPeerData().getAddress().equals(peerAddress)) .findFirst() .orElse(null); @@ -404,7 +404,7 @@ public class Network { * Returns first peer that has completed handshaking and has matching public key. */ public Peer getHandshakedPeerWithPublicKey(byte[] publicKey) { - return this.connectedPeers.stream() + return this.getConnectedPeers().stream() .filter(peer -> peer.getHandshakeStatus() == Handshake.COMPLETED && Arrays.equals(peer.getPeersPublicKey(), publicKey)) .findFirst().orElse(null); @@ -422,13 +422,13 @@ public class Network { private final Predicate isConnectedPeer = peerData -> { PeerAddress peerAddress = peerData.getAddress(); - return this.connectedPeers.stream().anyMatch(peer -> peer.getPeerData().getAddress().equals(peerAddress)); + return this.getConnectedPeers().stream().anyMatch(peer -> peer.getPeerData().getAddress().equals(peerAddress)); }; private final Predicate isResolvedAsConnectedPeer = peerData -> { try { InetSocketAddress resolvedSocketAddress = peerData.getAddress().toSocketAddress(); - return this.connectedPeers.stream() + return this.getConnectedPeers().stream() .anyMatch(peer -> peer.getResolvedAddress().equals(resolvedSocketAddress)); } catch (UnknownHostException e) { // Can't resolve - no point even trying to connect @@ -687,7 +687,7 @@ public class Network { return; } - if (connectedPeers.size() >= maxPeers) { + if (immutableConnectedPeers.size() >= maxPeers) { // We have enough peers LOGGER.debug("Connection discarded from peer {} because the server is full", address); socketChannel.close(); @@ -798,7 +798,7 @@ public class Network { } private Peer getPeerFromChannel(SocketChannel socketChannel) { - for (Peer peer : this.connectedPeers) { + for (Peer peer : this.getConnectedPeers()) { if (peer.getSocketChannel() == socketChannel) { return peer; } @@ -813,7 +813,7 @@ public class Network { } // Find peers that have reached their maximum connection age, and disconnect them - List peersToDisconnect = this.connectedPeers.stream() + List peersToDisconnect = this.getConnectedPeers().stream() .filter(peer -> !peer.isSyncInProgress()) .filter(peer -> peer.hasReachedMaxConnectionAge()) .collect(Collectors.toList());