Browse Source

Don't respond to file list requests with just the metadata file.

We have the separate metadata protocol for this now.
qdn-metadata
CalDescent 3 years ago
parent
commit
9da2b3c11a
  1. 8
      src/main/java/org/qortal/controller/arbitrary/ArbitraryDataFileListManager.java

8
src/main/java/org/qortal/controller/arbitrary/ArbitraryDataFileListManager.java

@ -538,6 +538,7 @@ public class ArbitraryDataFileListManager {
List<byte[]> hashes = new ArrayList<>(); List<byte[]> hashes = new ArrayList<>();
ArbitraryTransactionData transactionData = null; ArbitraryTransactionData transactionData = null;
boolean allChunksExist = false; boolean allChunksExist = false;
boolean hasMetadata = false;
try (final Repository repository = RepositoryManager.getRepository()) { try (final Repository repository = RepositoryManager.getRepository()) {
@ -562,6 +563,7 @@ public class ArbitraryDataFileListManager {
// Add the metadata file // Add the metadata file
if (arbitraryDataFile.getMetadataHash() != null) { if (arbitraryDataFile.getMetadataHash() != null) {
requestedHashes.add(arbitraryDataFile.getMetadataHash()); requestedHashes.add(arbitraryDataFile.getMetadataHash());
hasMetadata = true;
} }
// Add the chunk hashes // Add the chunk hashes
@ -594,6 +596,12 @@ public class ArbitraryDataFileListManager {
LOGGER.error(String.format("Repository issue while fetching arbitrary file list for peer %s", peer), e); LOGGER.error(String.format("Repository issue while fetching arbitrary file list for peer %s", peer), e);
} }
// If the only file we have is the metadata then we shouldn't respond. Most nodes will already have that,
// or can use the separate metadata protocol to fetch it. This should greatly reduce network spam.
if (hasMetadata && hashes.size() == 1) {
hashes.clear();
}
// We should only respond if we have at least one hash // We should only respond if we have at least one hash
if (hashes.size() > 0) { if (hashes.size() > 0) {

Loading…
Cancel
Save