]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
Refactor peerRefreshDNS() to clarify its (void*)1 logic (#1950)
authorEduard Bagdasaryan <eduard.bagdasaryan@measurement-factory.com>
Tue, 19 Nov 2024 22:43:59 +0000 (22:43 +0000)
committerAmos Jeffries <yadij@users.noreply.github.com>
Fri, 31 Jan 2025 07:52:27 +0000 (20:52 +1300)
Creating a raw pointer with 1 as an address/value raised red flags, and
it was difficult to interpret tricky peerRefreshDNS() logic correctly.

src/acl/SourceDomain.cc
src/neighbors.cc

index bbec3e9224f02a1e9f7b663b31f734b0d327bf51..000a76dd7cb89e730229be805847335ff9655d4e 100644 (file)
@@ -36,7 +36,11 @@ SourceDomainLookup::LookupDone(const char *, const Dns::LookupDetails &details,
 {
     ACLFilledChecklist *checklist = Filled((ACLChecklist*)data);
     checklist->markSourceDomainChecked();
-    checklist->request->recordLookup(details);
+    if (checklist->request)
+        checklist->request->recordLookup(details);
+    else
+        debugs(28, 3, "no request to recordLookup()");
+
     checklist->resumeNonBlockingCheck(SourceDomainLookup::Instance());
 }
 
index 33682fa878a52e5f8c4ee75a3a48796986a471a1..04b69c1e437780f0d0a032990ec7e0d966cd7ba8 100644 (file)
@@ -57,7 +57,8 @@ static void neighborAlive(CachePeer *, const MemObject *, const icp_common_t *);
 static void neighborAliveHtcp(CachePeer *, const MemObject *, const HtcpReplyData *);
 #endif
 static void neighborCountIgnored(CachePeer *);
-static void peerRefreshDNS(void *);
+static void peerDnsRefreshCheck(void *);
+static void peerDnsRefreshStart();
 static IPH peerDNSConfigure;
 static void peerProbeConnect(CachePeer *, const bool reprobeIfBusy = false);
 static CNCB peerProbeConnectDone;
@@ -583,7 +584,7 @@ neighbors_init(void)
         }
     }
 
-    peerRefreshDNS((void *) 1);
+    peerDnsRefreshStart();
 
     sep = getservbyname("echo", "udp");
     echo_port = sep ? ntohs((unsigned short) sep->s_port) : 7;
@@ -1237,24 +1238,32 @@ peerDNSConfigure(const ipcache_addrs *ia, const Dns::LookupDetails &, void *data
 }
 
 static void
-peerRefreshDNS(void *data)
+peerScheduleDnsRefreshCheck(const double delayInSeconds)
 {
-    CachePeer *p = nullptr;
-
-    if (eventFind(peerRefreshDNS, nullptr))
-        eventDelete(peerRefreshDNS, nullptr);
+    if (eventFind(peerDnsRefreshCheck, nullptr))
+        eventDelete(peerDnsRefreshCheck, nullptr);
+    eventAddIsh("peerDnsRefreshCheck", peerDnsRefreshCheck, nullptr, delayInSeconds, 1);
+}
 
-    if (!data && 0 == stat5minClientRequests()) {
+static void
+peerDnsRefreshCheck(void *)
+{
+    if (!stat5minClientRequests()) {
         /* no recent client traffic, wait a bit */
-        eventAddIsh("peerRefreshDNS", peerRefreshDNS, nullptr, 180.0, 1);
+        peerScheduleDnsRefreshCheck(180.0);
         return;
     }
 
-    for (p = Config.peers; p; p = p->next)
+    peerDnsRefreshStart();
+}
+
+static void
+peerDnsRefreshStart()
+{
+    for (auto p = Config.peers; p; p = p->next)
         ipcache_nbgethostbyname(p->host, peerDNSConfigure, p);
 
-    /* Reconfigure the peers every hour */
-    eventAddIsh("peerRefreshDNS", peerRefreshDNS, nullptr, 3600.0, 1);
+    peerScheduleDnsRefreshCheck(3600.0);
 }
 
 /// whether new TCP probes are currently banned