From: Eduard Bagdasaryan Date: Tue, 19 Nov 2024 22:43:59 +0000 (+0000) Subject: Refactor peerRefreshDNS() to clarify its (void*)1 logic (#1950) X-Git-Tag: SQUID_6_13~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=461919ccffc1559c58f000935434b9d3f11a9058;p=thirdparty%2Fsquid.git Refactor peerRefreshDNS() to clarify its (void*)1 logic (#1950) Creating a raw pointer with 1 as an address/value raised red flags, and it was difficult to interpret tricky peerRefreshDNS() logic correctly. --- diff --git a/src/acl/SourceDomain.cc b/src/acl/SourceDomain.cc index bbec3e9224..000a76dd7c 100644 --- a/src/acl/SourceDomain.cc +++ b/src/acl/SourceDomain.cc @@ -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()); } diff --git a/src/neighbors.cc b/src/neighbors.cc index 33682fa878..04b69c1e43 100644 --- a/src/neighbors.cc +++ b/src/neighbors.cc @@ -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