Browse Source

Removed "peerAddress" from ArbitraryDataFileListMessage (introduced in recent commit)

It's best that the source peer's address isn't exposed to the requesting peer. The relay peer can keep track of this mapping itself.

The only real issue with this approach is that we can't use data from ArbitraryDataFileListMessage to update our ArbitraryPeers data, because we can't distinguish between relay peers and hosting peers. But this isn't something we currently do anyway, as we have the ARBITRARY_SIGNATURES message type to take care of updating ArbitraryPeers mappings.
qdn
CalDescent 3 years ago
parent
commit
bcc89adb5f
  1. 7
      src/main/java/org/qortal/controller/arbitrary/ArbitraryDataManager.java
  2. 24
      src/main/java/org/qortal/network/message/ArbitraryDataFileListMessage.java

7
src/main/java/org/qortal/controller/arbitrary/ArbitraryDataManager.java

@ -770,8 +770,7 @@ public class ArbitraryDataManager extends Thread {
public void onNetworkArbitraryDataFileListMessage(Peer peer, Message message) {
ArbitraryDataFileListMessage arbitraryDataFileListMessage = (ArbitraryDataFileListMessage) message;
String sourcePeer = arbitraryDataFileListMessage.getPeerAddress();
LOGGER.info("Received hash list from peer {} with {} hashes, source peer: {}", peer, arbitraryDataFileListMessage.getHashes().size(), sourcePeer);
LOGGER.info("Received hash list from peer {} with {} hashes", peer, arbitraryDataFileListMessage.getHashes().size());
// Do we have a pending request for this data?
Triple<String, Peer, Long> request = arbitraryDataFileListRequests.get(message.getId());
@ -833,8 +832,6 @@ public class ArbitraryDataManager extends Thread {
if (isRelayRequest && Settings.getInstance().isRelayModeEnabled()) {
Peer requestingPeer = request.getB();
if (requestingPeer != null) {
// Add the source peer's address
arbitraryDataFileListMessage.setPeerAddress(peer.getPeerData().getAddress().toString());
// Forward to requesting peer;
if (!requestingPeer.sendMessage(arbitraryDataFileListMessage)) {
requestingPeer.disconnect("failed to forward arbitrary data file list");
@ -953,7 +950,7 @@ public class ArbitraryDataManager extends Thread {
newEntry = new Triple<>(signature58, null, timestamp);
arbitraryDataFileListRequests.put(message.getId(), newEntry);
ArbitraryDataFileListMessage arbitraryDataFileListMessage = new ArbitraryDataFileListMessage(signature, null, hashes);
ArbitraryDataFileListMessage arbitraryDataFileListMessage = new ArbitraryDataFileListMessage(signature, hashes);
arbitraryDataFileListMessage.setId(message.getId());
if (!peer.sendMessage(arbitraryDataFileListMessage)) {
LOGGER.info("Couldn't send list of hashes");

24
src/main/java/org/qortal/network/message/ArbitraryDataFileListMessage.java

@ -19,21 +19,18 @@ public class ArbitraryDataFileListMessage extends Message {
private final byte[] signature;
private final List<byte[]> hashes;
private String peerAddress;
public ArbitraryDataFileListMessage(byte[] signature, String peerAddress, List<byte[]> hashes) {
public ArbitraryDataFileListMessage(byte[] signature, List<byte[]> hashes) {
super(MessageType.ARBITRARY_DATA_FILE_LIST);
this.signature = signature;
this.peerAddress = peerAddress;
this.hashes = hashes;
}
public ArbitraryDataFileListMessage(int id, byte[] signature, String peerAddress, List<byte[]> hashes) {
public ArbitraryDataFileListMessage(int id, byte[] signature, List<byte[]> hashes) {
super(id, MessageType.ARBITRARY_DATA_FILE_LIST);
this.signature = signature;
this.peerAddress = peerAddress;
this.hashes = hashes;
}
@ -45,21 +42,10 @@ public class ArbitraryDataFileListMessage extends Message {
return this.signature;
}
public void setPeerAddress(String peerAddress) {
this.peerAddress = peerAddress;
}
public String getPeerAddress() {
return this.peerAddress;
}
public static Message fromByteBuffer(int id, ByteBuffer bytes) throws UnsupportedEncodingException, TransformationException {
byte[] signature = new byte[SIGNATURE_LENGTH];
bytes.get(signature);
String peerAddress = Serialization.deserializeSizedString(bytes, 255);
int count = bytes.getInt();
if (bytes.remaining() != count * HASH_LENGTH)
@ -73,7 +59,7 @@ public class ArbitraryDataFileListMessage extends Message {
hashes.add(hash);
}
return new ArbitraryDataFileListMessage(id, signature, peerAddress, hashes);
return new ArbitraryDataFileListMessage(id, signature, hashes);
}
@Override
@ -83,8 +69,6 @@ public class ArbitraryDataFileListMessage extends Message {
bytes.write(this.signature);
Serialization.serializeSizedString(bytes, this.peerAddress);
bytes.write(Ints.toByteArray(this.hashes.size()));
for (byte[] hash : this.hashes) {
@ -98,7 +82,7 @@ public class ArbitraryDataFileListMessage extends Message {
}
public ArbitraryDataFileListMessage cloneWithNewId(int newId) {
ArbitraryDataFileListMessage clone = new ArbitraryDataFileListMessage(this.signature, this.peerAddress, this.hashes);
ArbitraryDataFileListMessage clone = new ArbitraryDataFileListMessage(this.signature, this.hashes);
clone.setId(newId);
return clone;
}

Loading…
Cancel
Save