From 1975b0632e78b8f68855f991bc62cd42dc53fe88 Mon Sep 17 00:00:00 2001 From: Arne Babenhauserheide Date: Sun, 9 Nov 2025 00:58:48 +0100 Subject: [PATCH] DNSRequester: reduce delay without hostname 100x --- src/freenet/node/DNSRequester.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/freenet/node/DNSRequester.java b/src/freenet/node/DNSRequester.java index 4d2581cb982..43f7039735b 100644 --- a/src/freenet/node/DNSRequester.java +++ b/src/freenet/node/DNSRequester.java @@ -7,8 +7,11 @@ import java.util.Arrays; import java.util.Deque; import java.util.HashSet; +import java.util.Objects; import java.util.Set; +import freenet.io.comm.FreenetInetAddress; +import freenet.io.comm.Peer; import freenet.support.LogThresholdCallback; import freenet.support.Logger; import freenet.support.Logger.LogLevel; @@ -81,10 +84,15 @@ private void realRun() { } int unconnectedNodesLength = nodesToCheck.length; + boolean peerHasHostname = false; if (unconnectedNodesLength > 0) { // check a randomly chosen node that has not been checked // recently to avoid sending bursts of DNS requests PeerNode pn = nodesToCheck[node.getFastWeakRandom().nextInt(unconnectedNodesLength)]; + peerHasHostname = pn.nominalPeer.stream() + .map(Peer::getFreenetAddress) + .filter(Objects::nonNull) + .anyMatch(FreenetInetAddress::hasHostname); if (unconnectedNodesLength < 5) { // no need for optimizations: just clear all state recentNodeIdentitySet.clear(); @@ -102,7 +110,9 @@ private void realRun() { pn.maybeUpdateHandshakeIPs(false); } - int nextMaxWaitTime = 1000 + node.getFastWeakRandom().nextInt(60000); + // wait longer after DNS requests + int multiplier = peerHasHostname ? 100 : 1; + int nextMaxWaitTime = multiplier * (10 + node.getFastWeakRandom().nextInt(600)); try { synchronized(this) { wait(nextMaxWaitTime); // sleep 1-61s ...