From aaa0b251063425aec84f5c756aa918a463231b20 Mon Sep 17 00:00:00 2001 From: CalDescent Date: Mon, 2 May 2022 10:20:23 +0100 Subject: [PATCH] Make sure to set Peer.isDataPeer() to false as well as true, to prevent bugs due to object reuse. Also designate a peer as a "data peer" when making an outbound connection to request data from it. --- src/main/java/org/qortal/network/Network.java | 2 ++ src/main/java/org/qortal/network/task/ChannelAcceptTask.java | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/qortal/network/Network.java b/src/main/java/org/qortal/network/Network.java index 9789e62a..4e73f32b 100644 --- a/src/main/java/org/qortal/network/Network.java +++ b/src/main/java/org/qortal/network/Network.java @@ -338,6 +338,7 @@ public class Network { // Add this signature to the list of pending requests for this peer LOGGER.info("Making connection to peer {} to request files for signature {}...", peerAddressString, Base58.encode(signature)); Peer peer = new Peer(peerData); + peer.setIsDataPeer(true); peer.addPendingSignatureRequest(signature); return this.connectPeer(peer); // If connection (and handshake) is successful, data will automatically be requested @@ -698,6 +699,7 @@ public class Network { // Pick candidate PeerData peerData = peers.get(peerIndex); Peer newPeer = new Peer(peerData); + newPeer.setIsDataPeer(false); // Update connection attempt info peerData.setLastAttempted(now); diff --git a/src/main/java/org/qortal/network/task/ChannelAcceptTask.java b/src/main/java/org/qortal/network/task/ChannelAcceptTask.java index e455557e..da04cf9a 100644 --- a/src/main/java/org/qortal/network/task/ChannelAcceptTask.java +++ b/src/main/java/org/qortal/network/task/ChannelAcceptTask.java @@ -121,9 +121,9 @@ public class ChannelAcceptTask implements Task { newPeer = new Peer(socketChannel); if (isDataPeer) { - newPeer.setIsDataPeer(true); newPeer.setMaxConnectionAge(Settings.getInstance().getMaxDataPeerConnectionTime() * 1000L); } + newPeer.setIsDataPeer(isDataPeer); network.addConnectedPeer(newPeer); } catch (IOException e) {