From ef838627c408e3b5138bf3bb147dc351053df17c Mon Sep 17 00:00:00 2001 From: CalDescent Date: Sun, 6 Feb 2022 15:37:08 +0000 Subject: [PATCH] Stop asking for hashes from a peer if one fails. This fixes the request looping that occurs on when a peer is unable to serve files. --- .../arbitrary/ArbitraryDataFileManager.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataFileManager.java b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataFileManager.java index 27433180..44411e92 100644 --- a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataFileManager.java +++ b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataFileManager.java @@ -133,13 +133,19 @@ public class ArbitraryDataFileManager extends Thread { if (receivedArbitraryDataFileMessage != null) { LOGGER.debug("Received data file {} from peer {}. Time taken: {} ms", receivedArbitraryDataFileMessage.getArbitraryDataFile().getHash58(), peer, (endTime-startTime)); receivedAtLeastOneFile = true; + + // Remove this hash from arbitraryDataFileHashResponses now that we have received it + arbitraryDataFileHashResponses.remove(hash58); } else { LOGGER.debug("Peer {} didn't respond with data file {} for signature {}. Time taken: {} ms", peer, Base58.encode(hash), Base58.encode(signature), (endTime-startTime)); - } - // Remove this hash from arbitraryDataFileHashResponses now that we have tried to request it - arbitraryDataFileHashResponses.remove(hash58); + // Remove this hash from arbitraryDataFileHashResponses now that we have failed to receive it + arbitraryDataFileHashResponses.remove(hash58); + + // Stop asking for files from this peer + break; + } } else { LOGGER.trace("Already requesting data file {} for signature {}", arbitraryDataFile, Base58.encode(signature));