From 8c3753326f7e38d0b8da9ec8788971c6fedad2f2 Mon Sep 17 00:00:00 2001 From: CalDescent Date: Sat, 27 Mar 2021 18:00:39 +0000 Subject: [PATCH] Check "isFastSyncEnabledWhenResolvingFork" setting before requesting multiple blocks from a peer. This allows users to opt out of this functionality, by setting it to false in their settings. --- src/main/java/org/qortal/controller/Synchronizer.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/qortal/controller/Synchronizer.java b/src/main/java/org/qortal/controller/Synchronizer.java index 5b81622a..0c32a777 100644 --- a/src/main/java/org/qortal/controller/Synchronizer.java +++ b/src/main/java/org/qortal/controller/Synchronizer.java @@ -34,6 +34,7 @@ import org.qortal.network.message.Message.MessageType; import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.repository.RepositoryManager; +import org.qortal.settings.Settings; import org.qortal.transaction.Transaction; import org.qortal.utils.Base58; @@ -370,12 +371,11 @@ public class Synchronizer { int additionalPeerBlocksAfterCommonBlock = peerHeight - commonBlockHeight; - // Firstly, attempt to retrieve the blocks themselves, rather than signatures. This is supported by newer peers. - // We could optionally check for a version here if we didn't want to make unnecessary requests + // Firstly, attempt to retrieve the blocks themselves, rather than signatures. This is supported by newer peers (version 1.5.0 and above). List peerBlocks = new ArrayList<>(); - if (peer.getPeersVersion() >= PEER_VERSION_150) { - // This peer supports syncing multiple blocks at once via GetBlocksMessage + if (Settings.getInstance().isFastSyncEnabledWhenResolvingFork() && peer.getPeersVersion() >= PEER_VERSION_150) { + // This peer supports syncing multiple blocks at once via GetBlocksMessage, and it is enabled in the settings int numberBlocksRequired = additionalPeerBlocksAfterCommonBlock - peerBlocks.size(); while (numberBlocksRequired > 0) { if (Controller.isStopping()) @@ -422,7 +422,7 @@ public class Synchronizer { } } else { - // Older peer version - use slow sync + // Older peer version, or fast sync is disabled in the settings - use slow sync // Convert any leftover (post-common) block summaries into signatures to request from peer List peerBlockSignatures = peerBlockSummaries.stream().map(BlockSummaryData::getSignature).collect(Collectors.toList());