diff --git a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataFileManager.java b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataFileManager.java index 6d352b79..9b437e2b 100644 --- a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataFileManager.java +++ b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataFileManager.java @@ -37,7 +37,7 @@ public class ArbitraryDataFileManager extends Thread { /** * Map to keep track of our in progress (outgoing) arbitrary data file requests */ - private Map arbitraryDataFileRequests = Collections.synchronizedMap(new HashMap<>()); + public Map arbitraryDataFileRequests = Collections.synchronizedMap(new HashMap<>()); /** * Map to keep track of hashes that we might need to relay @@ -148,7 +148,7 @@ public class ArbitraryDataFileManager extends Thread { } } else { - LOGGER.trace("Already requesting data file {} for signature {}", arbitraryDataFile, Base58.encode(signature)); + LOGGER.trace("Already requesting data file {} for signature {} from peer {}", arbitraryDataFile, Base58.encode(signature), peer); } } else { diff --git a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataFileRequestThread.java b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataFileRequestThread.java index 0c2834d0..e46fd2fb 100644 --- a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataFileRequestThread.java +++ b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataFileRequestThread.java @@ -80,6 +80,12 @@ public class ArbitraryDataFileRequestThread implements Runnable { continue; } + // Skip if already requesting, but don't remove, as we might want to retry later + if (arbitraryDataFileManager.arbitraryDataFileRequests.containsKey(hash58)) { + // Already requesting - leave this attempt for later + continue; + } + // We want to process this file shouldProcess = true; iterator.remove();