From: Alex Rousskov Date: Fri, 23 Feb 2024 04:26:38 +0000 (+0000) Subject: Fix marking of problematic cached IP addresses (#1691) X-Git-Tag: SQUID_7_0_1~201 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e213ef430798d243edcd572a510acc1dd2d8346f;p=thirdparty%2Fsquid.git Fix marking of problematic cached IP addresses (#1691) Since inception in 2017 commit fd9c47d, Dns::CachedIps::have() always returned position zero after finding a matching IP address (at zero or positive position). The bug affected two callers: * markAsBad() always marked the first stored address (as bad); * forgetMarking() always cleared the first stored address marking. Buggy markings led to Squid sometimes not attempting to use a working address (e.g., IPv4) while using a known problematic one (e.g., IPv6). --- diff --git a/src/ipcache.cc b/src/ipcache.cc index 41290fdaee..0e5b5d520d 100644 --- a/src/ipcache.cc +++ b/src/ipcache.cc @@ -991,6 +991,7 @@ Dns::CachedIps::have(const Ip::Address &ip, size_t *positionOrNil) const debugs(14, 7, ip << " at " << pos << " in " << *this); return true; } + ++pos; // TODO: Replace with std::views::enumerate() after upgrading to C++23 } // no such address; leave *position as is debugs(14, 7, " no " << ip << " in " << *this);