From feeca77436ebb2f99658c6aebd26cbfa915e3eab Mon Sep 17 00:00:00 2001 From: CalDescent Date: Wed, 15 Dec 2021 11:29:49 +0000 Subject: [PATCH] Added directDataRetrievalEnabled setting (default true) Setting this to false prevents new connections being made to peers that report to have the data that is needed. This is likely only useful for testing, as disabling it in production would reduce the success rate of data retrieval. --- .../qortal/controller/arbitrary/ArbitraryDataManager.java | 5 +++++ src/main/java/org/qortal/settings/Settings.java | 7 +++++++ 2 files changed, 12 insertions(+) diff --git a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataManager.java b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataManager.java index abba2afd..c8142c92 100644 --- a/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataManager.java +++ b/src/main/java/org/qortal/controller/arbitrary/ArbitraryDataManager.java @@ -326,6 +326,11 @@ public class ArbitraryDataManager extends Thread { } private boolean shouldMakeDirectFileRequestsForSignature(String signature58) { + if (!Settings.getInstance().isDirectDataRetrievalEnabled()) { + // Direct connections are disabled in the settings + return false; + } + Triple request = arbitraryDataSignatureRequests.get(signature58); if (request == null) { diff --git a/src/main/java/org/qortal/settings/Settings.java b/src/main/java/org/qortal/settings/Settings.java index d11aff40..871a7e1a 100644 --- a/src/main/java/org/qortal/settings/Settings.java +++ b/src/main/java/org/qortal/settings/Settings.java @@ -282,6 +282,9 @@ public class Settings { /** Whether to allow data outside of the storage policy to be relayed between other peers */ private boolean relayModeEnabled = false; + /** Whether to make connections directly with peers that have the required data */ + private boolean directDataRetrievalEnabled = true; + /** Expiry time (ms) for (unencrypted) built/cached data */ private Long builtDataExpiryInterval = 30 * 24 * 60 * 60 * 1000L; // 30 days @@ -835,6 +838,10 @@ public class Settings { return this.relayModeEnabled; } + public boolean isDirectDataRetrievalEnabled() { + return this.directDataRetrievalEnabled; + } + public Long getBuiltDataExpiryInterval() { return this.builtDataExpiryInterval; }