Browse Source

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.
qdn-direct-connections
CalDescent 2 years ago
parent
commit
aaa0b25106
  1. 2
      src/main/java/org/qortal/network/Network.java
  2. 2
      src/main/java/org/qortal/network/task/ChannelAcceptTask.java

2
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);

2
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) {

Loading…
Cancel
Save