]> git.ipfire.org Git - thirdparty/squid.git/log
thirdparty/squid.git
2 days agoext_ldap_group_acl: Require base dn and user search filter (#2167) auto master
Joshua Rogers [Sat, 13 Sep 2025 12:02:58 +0000 (12:02 +0000)] 
ext_ldap_group_acl: Require base dn and user search filter (#2167)

Make ext_ldap_group_acl require -B (user base DN) and -F (user search
filter) so the helper finds the user before checking group membership.
Fix LDAP referrals handling and make %v always expand to the requested
group name. Improve logging and errors, and include release notes for
the breaking flag requirements.

2 days agoHTCP: Check for too-small packed and too-large unpacked fields (#2164)
Joshua Rogers [Thu, 11 Sep 2025 23:33:51 +0000 (23:33 +0000)] 
HTCP: Check for too-small packed and too-large unpacked fields (#2164)

Harden HTCP parsing by checking HTCP fields

- Check packed field lengths and buffer space before reads.
- Guard CLR "reason" when sz < 2; log invalid messages.
- Support old minor==0 layout with safe prefix copy.
- Use early returns and unique_ptr for safer flows.

3 days agoMaintenance: Remove extra (and incorrect) error map value (#2238)
Joshua Rogers [Thu, 11 Sep 2025 14:49:16 +0000 (14:49 +0000)] 
Maintenance: Remove extra (and incorrect) error map value (#2238)

ERROR_INVALID_HANDLE is already (correctly) defined as EBADF.

3 days agoFix off-by-one in helper args count assertion (#2212)
Joshua Rogers [Thu, 11 Sep 2025 13:27:27 +0000 (13:27 +0000)] 
Fix off-by-one in helper args count assertion (#2212)

The `nargs` value should now be pointing past both the
`HELPER_MAX_ARGS` and the additional terminator. i.e. outside
the valid array space. This is okay because it is an absolute
counter (1-based) not an offset (0-based) despite how it is
used to fill the array.

4 days agodigest_edirectory_auth: safely return password (#2197)
Joshua Rogers [Thu, 11 Sep 2025 11:58:52 +0000 (11:58 +0000)] 
digest_edirectory_auth: safely return password (#2197)

Previously, nmasldap_get_simple_pwd() and nmasldap_get_password()
could overrun or return non-terminated strings at length
boundaries. This change adds strict bounds checks, copies at most
len - 1, and ensures explicit NUL termination, aligning both
helpers buffer/length semantics without altering call-site
behavior.

4 days agoNoNewGlobals for Auth::Scheme::_Schemes (#2196)
Joshua Rogers [Thu, 11 Sep 2025 10:31:55 +0000 (10:31 +0000)] 
NoNewGlobals for Auth::Scheme::_Schemes (#2196)

4 days agoFix purging of entries by relative [Content-]Location URLs (#2235)
Joshua Rogers [Wed, 10 Sep 2025 05:12:19 +0000 (05:12 +0000)] 
Fix purging of entries by relative [Content-]Location URLs (#2235)

5 days agoDo not leak file handle on _open_osfhandle() xaccept() failure (#2231)
Joshua Rogers [Wed, 10 Sep 2025 03:48:22 +0000 (03:48 +0000)] 
Do not leak file handle on _open_osfhandle() xaccept() failure (#2231)

5 days agoRemove ntlm_sspi_auth helper (#2223)
Amos Jeffries [Wed, 10 Sep 2025 02:26:32 +0000 (02:26 +0000)] 
Remove ntlm_sspi_auth helper (#2223)

As of 2025 Microsoft has officially removed NTLM support from
Windows machines entirely. The SSPI mechanisms will no
longer provide NTLM authentication for this helper to use.

5 days agoFix UDP log module opening and closing code (#2214)
Joshua Rogers [Wed, 10 Sep 2025 00:57:09 +0000 (00:57 +0000)] 
Fix UDP log module opening and closing code (#2214)

logfile_mod_udp_open() mistreated successful comm_connect_addr() result
as an "Unable to connect" failure (and vice versa), rendering UDP-based
logging unusable. Broken since at least 2010 commit d938215.

Also fixed logfile_mod_udp_close() closing FD 0 after "Invalid UDP
logging address" ERRORs during logfile_mod_udp_open().

5 days agowin32: close pi.hThread as required by Windows API (#2208)
Joshua Rogers [Tue, 9 Sep 2025 18:41:17 +0000 (18:41 +0000)] 
win32: close pi.hThread as required by Windows API (#2208)

Previously, a leak would occur due to an unclosed pi.hThread.

5 days agoDo not leak file handle on _open_osfhandle() failure (#2222)
Joshua Rogers [Tue, 9 Sep 2025 17:15:26 +0000 (17:15 +0000)] 
Do not leak file handle on _open_osfhandle() failure (#2222)

5 days agoext_file_userip_acl: harden lookups and memory handling (#2198)
Joshua Rogers [Tue, 9 Sep 2025 15:46:55 +0000 (15:46 +0000)] 
ext_file_userip_acl: harden lookups and memory handling (#2198)

Stop mutating getgrnam(3) buffer; iterate gr_mem safely
Zero last node and NULL-check in dict_lookup() to prevent OOB read
Add free_dict() and free dictionary before exit

5 days agoext_edirectory_userip_acl: Redact password from stdout (#2156)
Joshua Rogers [Tue, 9 Sep 2025 14:19:52 +0000 (14:19 +0000)] 
ext_edirectory_userip_acl: Redact password from stdout (#2156)

5 days agoDo not leak RedirectStateData on snprintf error/truncation (#2205)
Joshua Rogers [Tue, 9 Sep 2025 09:45:48 +0000 (09:45 +0000)] 
Do not leak RedirectStateData on snprintf error/truncation (#2205)

6 days agoFix BodyPipe debugging in handleChunkedRequestBody() (#2224)
Joshua Rogers [Tue, 9 Sep 2025 08:18:25 +0000 (08:18 +0000)] 
Fix BodyPipe debugging in handleChunkedRequestBody() (#2224)

6 days agoSimplify by removing lazy ACLDomainData::domains initialization (#2182)
Joshua Rogers [Tue, 9 Sep 2025 06:52:44 +0000 (06:52 +0000)] 
Simplify by removing lazy ACLDomainData::domains initialization (#2182)

6 days agoext_ldap_group_acl: avoid infinite loop on login containing '%s' (#2217)
Joshua Rogers [Tue, 9 Sep 2025 05:29:34 +0000 (05:29 +0000)] 
ext_ldap_group_acl: avoid infinite loop on login containing '%s' (#2217)

6 days agoFix debugging of Eui48::lookup() problems (#2211)
Joshua Rogers [Tue, 9 Sep 2025 04:00:06 +0000 (04:00 +0000)] 
Fix debugging of Eui48::lookup() problems (#2211)

arpReq.arp_ha.sa_data is not a null-terminated buffer.
Log meaningful data: the sa_family which caused the log.

6 days agourn: free urn object on initial error (#2195)
Joshua Rogers [Tue, 9 Sep 2025 02:38:48 +0000 (02:38 +0000)] 
urn: free urn object on initial error (#2195)

Previously, the object wasn't freed if an error occurred
when setting the uri.

Also sets the location header to the first url, regardless
of qsort shifting the buffer.

6 days agoDNS: Do not leak RR data upon RR data unpacking errors (#2193)
Joshua Rogers [Tue, 9 Sep 2025 01:14:06 +0000 (01:14 +0000)] 
DNS: Do not leak RR data upon RR data unpacking errors (#2193)

6 days agodigest_edirectory_auth: Remove useless free in edirectory digest (#2192)
Joshua Rogers [Mon, 8 Sep 2025 23:47:49 +0000 (23:47 +0000)] 
digest_edirectory_auth: Remove useless free in edirectory digest (#2192)

In this codepath, `requestBer` is nullptr.

6 days agonegotiate_kerberos_auth: Properly align NDR data (#2186)
Joshua Rogers [Mon, 8 Sep 2025 22:18:21 +0000 (22:18 +0000)] 
negotiate_kerberos_auth: Properly align NDR data (#2186)

Resolves sporadic Negotiate/Kerberos auth failures that manifested
as proxy 407 loops or helper errors when decoding PAC data, depending
on ticket layout.

Previously, the parser advanced bpos by the remainder:
(bpos += bpos %n)
instead of padding to the next multiple of n.

For example, n = 4:
    bpos=5 (r=1): current: 6 (wrong), correct: 8
    bpos=6 (r=2): current: 8 (accidentally right)
    bpos=7 (r=3): current: 10 (wrong), correct: 8

6 days agodigest_edirectory_auth: null-terminate NMAS values array (#2184)
Joshua Rogers [Mon, 8 Sep 2025 20:51:22 +0000 (20:51 +0000)] 
digest_edirectory_auth: null-terminate NMAS values array (#2184)

This patch NULL-terminates the NMAS Universal Password values
array (values[1] = nullptr) to match ldap_get_values() semantics
and avoid potential out-of-bounds iteration.

6 days agoext_kerberos_ldap_group_acl: avoid freeing getenv() pointer (#2190)
Joshua Rogers [Mon, 8 Sep 2025 19:20:03 +0000 (19:20 +0000)] 
ext_kerberos_ldap_group_acl: avoid freeing getenv() pointer (#2190)

6 days agoImprove how NotePairs::find() reports its results (#2175)
Joshua Rogers [Mon, 8 Sep 2025 17:54:42 +0000 (17:54 +0000)] 
Improve how NotePairs::find() reports its results (#2175)

Replaced a problematic combination of a boolean return type and an SBuf
out-parameter with a safer and more readable optional SBuf return type.

6 days agontlm_sspi_auth: memcmp not memcpy, send newline, no uninit mem (#2218)
Joshua Rogers [Mon, 8 Sep 2025 16:25:18 +0000 (16:25 +0000)] 
ntlm_sspi_auth: memcmp not memcpy, send newline, no uninit mem (#2218)

Previously, memcpy was incorrectly used instead of memcmp. In addition
to this, uninitalized memory could be used, and responses to Squid were
missing a newline.

6 days agoDo not allow client_ip_max_connections+1 connections (#2168)
Joshua Rogers [Mon, 8 Sep 2025 14:43:54 +0000 (14:43 +0000)] 
Do not allow client_ip_max_connections+1 connections (#2168)

Previously, setting client_ip_max_connections to a non-negative N would
allow N+1 client connections, due to an off-by-one error.

6 days agoDNS: fix RRPack memcpy to copy rdata buffer, not the pointer (#2189)
Joshua Rogers [Mon, 8 Sep 2025 12:33:38 +0000 (12:33 +0000)] 
DNS: fix RRPack memcpy to copy rdata buffer, not the pointer (#2189)

Fortunately, broken code had no effect because its only caller --
rfc2671RROptPack() that sends EDNS option -- always supplies zero-size
rdata.

Also clarified rfc1035QueryUnpack() implementation using sizeof().

7 days agoSNMP: Improve parsing of malformed ASN.1 object identifiers (#2185)
Joshua Rogers [Mon, 8 Sep 2025 11:08:47 +0000 (11:08 +0000)] 
SNMP: Improve parsing of malformed ASN.1 object identifiers (#2185)

ASN.1 object identifiers are length-delimited, not null-terminated. If
the input encoding omits a terminating byte (MSB clear), then the parser
would walk past the buffer.

Also simplified expressions related to sub-identifier parsing.

7 days agoAvoid memory leaks when logging to MS Windows syslog (#2154)
Joshua Rogers [Mon, 8 Sep 2025 09:37:01 +0000 (09:37 +0000)] 
Avoid memory leaks when logging to MS Windows syslog (#2154)

7 days agoSNMP: Do not send responses that we fail to encode (#2151)
Alex Rousskov [Mon, 8 Sep 2025 08:05:00 +0000 (08:05 +0000)] 
SNMP: Do not send responses that we fail to encode (#2151)

When snmp_build() fails, its output buffer must not be used:

    Syscall param sendto() points to uninitialised byte(s)
        by xsendto() (socket.h:118)
        by comm_udp_sendto() (comm.cc:923)
        by snmpConstructReponse() (snmp_core.cc:449)

Also inform the admin about SNMP encoding failures.

7 days agoDo not assert when debugging SNMP requests with long OIDs (#2150)
Alex Rousskov [Mon, 8 Sep 2025 06:40:02 +0000 (06:40 +0000)] 
Do not assert when debugging SNMP requests with long OIDs (#2150)

    FATAL: assertion failed: MemBuf.cc: "new_cap > (size_t) capacity"

Also fixes repeated same-buffer snmpDebugOid() calls that used to
accumulate stale content in snmpTreeNext():

    snmpTreeNext: Current : .1.3.6.1.4.1.3495
    snmpTreeNext: Next : .1.3.6.1.4.1.3495.1.3.6.1.4.1.3495.1.1.1.0

Current snmpDebugOid() callers have been checked for compatibility with
this fix. Fixing snmpDebugOid() API is out of this surgical fix scope.

7 days agoFix memory leak when parsing deprecated %rG logformat code (#2187)
Joshua Rogers [Mon, 8 Sep 2025 05:06:43 +0000 (05:06 +0000)] 
Fix memory leak when parsing deprecated %rG logformat code (#2187)

Also terminate the tables for ProxyProtocol and TableTransport %codes.

7 days agotext_backend: avoid memory leaks when reload/clearing (#2188)
Joshua Rogers [Sun, 7 Sep 2025 23:04:46 +0000 (23:04 +0000)] 
text_backend: avoid memory leaks when reload/clearing (#2188)

7 days agoBug 5504: Document that Squid discards invalid rewrite-url (#2202)
Eduard Bagdasaryan [Sat, 6 Sep 2025 22:16:07 +0000 (22:16 +0000)] 
Bug 5504: Document that Squid discards invalid rewrite-url (#2202)

... values returned by url_rewrite_program.

9 days agoext_kerberos_ldap_group_acl: Improve LDAPMessage freeing (#2181)
Joshua Rogers [Sat, 6 Sep 2025 12:34:22 +0000 (12:34 +0000)] 
ext_kerberos_ldap_group_acl: Improve LDAPMessage freeing (#2181)

Do not free uninitialized or freed LDAPMessage.

9 days agoext_ad_group_acl: Fix domain lookup error handling (#2180)
Joshua Rogers [Sat, 6 Sep 2025 08:28:12 +0000 (08:28 +0000)] 
ext_ad_group_acl: Fix domain lookup error handling (#2180)

On errors, the helper was reporting DsRoleGetPrimaryDomainInformation()
error info using the wrong/bogus error code and probably freeing an
uninitialized pointer.

9 days agoConsistently check strcspn return value (#2166)
Joshua Rogers [Sat, 6 Sep 2025 07:04:21 +0000 (07:04 +0000)] 
Consistently check strcspn return value (#2166)

9 days agoDocs: Fix markdown for squid-bugs link in SECURITY.md (#2201)
Joshua Rogers [Fri, 5 Sep 2025 13:45:03 +0000 (13:45 +0000)] 
Docs: Fix markdown for squid-bugs link in SECURITY.md (#2201)

10 days agoMaintenance: Fix out-of-sync If-None-Match copying explanation (#2200)
Joshua Rogers [Thu, 4 Sep 2025 20:25:19 +0000 (20:25 +0000)] 
Maintenance: Fix out-of-sync If-None-Match copying explanation (#2200)

If `cache_miss_revalidate` is enabled, we append the header.

11 days agonegotiate_wrapper: Search buffer with strchr instead of memchr (#2176)
Joshua Rogers [Wed, 3 Sep 2025 17:36:49 +0000 (17:36 +0000)] 
negotiate_wrapper: Search buffer with strchr instead of memchr (#2176)

Previously, memchr would search tainted data.

11 days agonegotiate_sspi_auth: Do not exit on the first request (#2159)
Joshua Rogers [Wed, 3 Sep 2025 16:15:05 +0000 (16:15 +0000)] 
negotiate_sspi_auth: Do not exit on the first request (#2159)

Broken since 2010 commit 8eeb87e6.

11 days agoReject eui64 ACL addresses with trailing garbage (#2157)
Joshua Rogers [Wed, 3 Sep 2025 13:09:10 +0000 (13:09 +0000)] 
Reject eui64 ACL addresses with trailing garbage (#2157)

Also limit eui64 ACL addresses to 255 characters.

12 days agoFTP: Avoid null dereferences when handling ftp_port traffic (#2172)
Joshua Rogers [Tue, 2 Sep 2025 19:06:12 +0000 (19:06 +0000)] 
FTP: Avoid null dereferences when handling ftp_port traffic (#2172)

`strchr` may return null if a deliminator is not found. Likewise,
if an `Http::HdrType::FTP_REASON` string is not found, nullptr would
be used in the %s formatter, leading to UB.

12 days agoCheck for SNMP objid memory allocation failures (#2162)
Joshua Rogers [Tue, 2 Sep 2025 11:36:42 +0000 (11:36 +0000)] 
Check for SNMP objid memory allocation failures (#2162)

13 days agoAdd RegisteredRunner for HTCP (#2143)
Amos Jeffries [Tue, 2 Sep 2025 05:46:16 +0000 (05:46 +0000)] 
Add RegisteredRunner for HTCP (#2143)

2 weeks agoReduce testHttpRange dependencies (#2148)
Eduard Bagdasaryan [Sat, 30 Aug 2025 22:09:14 +0000 (22:09 +0000)] 
Reduce testHttpRange dependencies (#2148)

This drastic reduction in testHttpRange dependencies is made possible by
splitting HeaderTools code into several parts:

* Header-mangling code that pulled in many heavy dependencies but was
  unused by testHttpRange code. This high-level code does not belong to
  libhttp, so it was left in src/ (see HeaderMangling.cc).

* Simple header manipulation functions without heavy dependencies; some
  used by testHttpRange code. This low-level code should eventually be
  moved to libhttp, but it was left in HttpHeaderTools.cc for now
  because libhttp itself is currently bloated with heavy dependencies --
  linking with libhttp requires linking with or stubbing a lot of
  code unrelated to testHttpRange.

* Definition of httpHeaderParseQuotedString() and a few other functions
  declared in HttpHeader.h were moved to HttpHeader.cc to improve
  declaration/definition/stubs affinity and avoid linking errors:
  testHttpRange now depends on stub_HttpHeader.cc that has stubs for
  these functions.

* httpHeaderMaskInit() and getStringPrefix() are only used by
  HttpHeader.cc, so they were moved to HttpHeader.cc and made static.

Moved code was unchanged. A few comments were relocated to better match
Squid coding style. A few STUBs were added/adjusted as needed.

TODO: Check the remaining two tests that still include header mangling
code: testHttpRequest and testCacheManager.

2 weeks agoAdd RegisteredRunner for SNMP (#2142)
Amos Jeffries [Sat, 30 Aug 2025 10:17:49 +0000 (10:17 +0000)] 
Add RegisteredRunner for SNMP (#2142)

2 weeks agoFix ASN.1 encoding of long SNMP OIDs (#2149)
Alex Rousskov [Sat, 30 Aug 2025 06:49:36 +0000 (06:49 +0000)] 
Fix ASN.1 encoding of long SNMP OIDs (#2149)

2 weeks agoMaintenance: C++11 default initializers for Comm::Connection (#2147)
Amos Jeffries [Sat, 30 Aug 2025 05:26:44 +0000 (05:26 +0000)] 
Maintenance: C++11 default initializers for Comm::Connection (#2147)

2 weeks agoAdd origin-form and absolute-path to URI API (#2141)
Amos Jeffries [Sat, 30 Aug 2025 04:00:29 +0000 (04:00 +0000)] 
Add origin-form and absolute-path to URI API (#2141)

Convert callers of Uri::path() as appropriate to their needs.

These methods provide %-encoded URI components for use in
display or normalized processing. The path() method is now only
guaranteed to provide the URL-path component in un-escaped form
(though query has not yet been moved).

2 weeks agoValidate raw-IPv4 when parsing hostnames (#2140)
Amos Jeffries [Wed, 27 Aug 2025 19:13:15 +0000 (19:13 +0000)] 
Validate raw-IPv4 when parsing hostnames (#2140)

2 weeks agoRemove DEFAULT_ICP_PORT build variable (#2146)
Amos Jeffries [Tue, 26 Aug 2025 02:36:53 +0000 (02:36 +0000)] 
Remove DEFAULT_ICP_PORT build variable (#2146)

Since 2008 commit df2eec10, this variable has only been used for
icp_port documentation and only in one location. Just stating the IANA
registered port (i.e. 3130) there is better.

4 weeks agoFix type mismatch in new/delete of addrinfo::ai_addr (#2136)
Ben Kallus [Mon, 11 Aug 2025 13:02:17 +0000 (13:02 +0000)] 
Fix type mismatch in new/delete of addrinfo::ai_addr (#2136)

new/delete type mismatches are UB. Fix an instance of this
problem that occurs when sockaddr_in6 is allocated, but
sockaddr is deallocated, by always allocating/deallocating
sockaddr_storage.

    AddressSanitizer: new-delete-type-mismatch:
      object passed to delete has wrong type:
      size of the allocated type:   28 bytes;
      size of the deallocated type: 16 bytes.
    #0 0xaaaad1a8db54 in operator delete(void*, unsigned long)
    #1 0xaaaad287a668 in Ip::Address::FreeAddr(addrinfo*&)
        src/ip/Address.cc:710:22

5 weeks agoUpdated CREDITS to better match current repository files (#2139)
Alex Rousskov [Sun, 10 Aug 2025 23:36:26 +0000 (23:36 +0000)] 
Updated CREDITS to better match current repository files (#2139)

Updated a few stale or mispelled paths.

Also deleted CREDITS entries for files deleted in recent commit 1ce58610
that removed basic_smb_lm_auth helper.

Also, acinclude/ax_cxx_compile_stdcxx.m4 got new authors (compared to
its earlier ax_cxx_compile_stdcxx_11.m4 incarnation).

5 weeks agoRemove smblib and librfcnb (#2138)
Francesco Chemolli [Sat, 9 Aug 2025 23:01:57 +0000 (23:01 +0000)] 
Remove smblib and librfcnb (#2138)

Unused since we removed basic_smb_lm_auth helper.

5 weeks agoBug 5407: Support at least 1000 groups per Kerberos user (#2047)
Norman Ziert [Tue, 5 Aug 2025 08:31:40 +0000 (08:31 +0000)] 
Bug 5407: Support at least 1000 groups per Kerberos user (#2047)

Increase MAX_PAC_GROUP_SIZE to a more reasonable value,
so negotiate_kerberos_auth can report more than approximately
200 groups an authenticated user is member of back to Squid.

5 weeks agoMake spell-check.sh happy and remove stale spelling exceptions (#2122)
Amos Jeffries [Mon, 4 Aug 2025 12:20:02 +0000 (12:20 +0000)] 
Make spell-check.sh happy and remove stale spelling exceptions (#2122)

This change fixes a few misspellings identified by Codespell v2.4.1 and
removes all no-longer-used spelling exceptions that we could find. Most
of the fixed misspellings were present but ignored in 2020 commit
2f8abb64 because then-current Codespell v1.16.0 did not flag them.

N.B. GitHub Actions ubuntu-24.04 runner still uses Codespell v1.16.0.

6 weeks agoFix FTP response parsing and error handling memory leaks (#2133)
Eduard Bagdasaryan [Fri, 1 Aug 2025 19:58:26 +0000 (19:58 +0000)] 
Fix FTP response parsing and error handling memory leaks (#2133)

FTP EPLF parsing leaks in ftpListParseParts() were detected by Coverity.
CID 1660782 and CID 1660785: Resource leaks (RESOURCE_LEAK).

Three other FTP client-related leaks were detected by Valgrind:

* Ftp::CtrlChannel::last_reply
* ErrorPage::ftp::cwd_msg
* Ftp::DataChannel::host

6 weeks agoEnhance and use POSIX socket compatibility layer (#2046)
Francesco Chemolli [Thu, 31 Jul 2025 18:01:47 +0000 (18:01 +0000)] 
Enhance and use POSIX socket compatibility layer (#2046)

Implement portable wrappers around most socket-related functions, named
x[function], and use them in all callsites.

winsock's socket-related functions are very similar but not
identical to the POSIX standard. Make the mswindows
compatibility layer available to MinGW, and modernize it.

Error highlighting the issue:
```
TcpAcceptor.cc: In member function
  'bool Comm::TcpAcceptor::acceptInto(Comm::ConnectionPointer&)':
TcpAcceptor.cc:352:17: error:
  comparison of unsigned expression in '< 0'
  is always false [-Werror=type-limits]
  352 |     if (rawSock < 0) {
```

6 weeks agoSimplify Ipc::Strand::handleRegistrationResponse() (#2129)
Eduard Bagdasaryan [Thu, 31 Jul 2025 05:22:56 +0000 (05:22 +0000)] 
Simplify Ipc::Strand::handleRegistrationResponse() (#2129)

Checking PID to ignore stale responses became unnecessary after 2021
commit 4c21861 added Mine() calls that guarantee message freshness.

Also replaced the matching kidId check with an assertion because no IPC
messages, not even stale ones, may be sent to the kid with the wrong kid
identifier. This assertion cannot be easily generalized because most IPC
messages do not contain the kid identifier of the intended recipient.

6 weeks agoCI: Support customizing CONTRIBUTORS in new contributor PRs (#2128)
Eduard Bagdasaryan [Tue, 29 Jul 2025 12:26:28 +0000 (12:26 +0000)] 
CI: Support customizing CONTRIBUTORS in new contributor PRs (#2128)

When our source-maintenance.sh recognizes a magic phrase in a commit
message, it treats that commit as authoritative for CONTRIBUTORS file.
That feature allows us to customize CONTRIBUTORS by adding a magic
phrase to the commit message, preventing unwanted automated
collectAuthors() actions for earlier commits. Such commits work well
enough when CONTRIBUTORS is customized by an already known Squid
developer in a dedicated PR.

The same feature cannot work for PRs created by new developers because
when quick.yaml tests a PR, the first commit visible to collectAuthors()
is not a PR branch commit that the author could, with some considerable
trouble, customize, but a so called GitHub PR "merge commit" that GitHub
automatically creates with PR creator as the author. That merge commit
message does not contain PR description and never has our magic phrase.
That merge commit author details are wrong when PR creators want to use
information that differs from their public GitHub account info.

With this change, collectAuthors() consults PR description (when testing
PRs), allowing CONTRIBUTORS customization without any extra efforts:
Adding the magic phrase to PR description has to be done anyway.

7 weeks agoSimplify DelayId composite position management (#2126)
Eduard Bagdasaryan [Tue, 22 Jul 2025 23:42:46 +0000 (23:42 +0000)] 
Simplify DelayId composite position management (#2126)

Moved DelayId::compositeId initialization to the constructor and removed
its setter and getters as unused. Simplified DelayId methods by using
"pool and compositeId are either both set or both unset" invariant that
is now upheld by the two corresponding class constructors.

7 weeks agoFix scripts/update-contributors.pl CONTRIBUTORS screening (#2125)
Alex Rousskov [Mon, 21 Jul 2025 21:18:14 +0000 (21:18 +0000)] 
Fix scripts/update-contributors.pl CONTRIBUTORS screening (#2125)

    Possible unintended interpolation of @users in string
    Bareword "true" not allowed
    Bareword "false" not allowed
    Execution of ... aborted due to compilation errors

Recent commit daa76f41 broke scripts/update-contributors.pl syntax (see
error messages quoted above) and its lower-case comparison logic,
effectively disabling CONTRIBUTORS checks.

Also do not hide update-contributors.pl execution failures. Buggy
failure detection contributed to the above problems ignored by CI tests.

7 weeks agoDelayId::operator bool() should account for cache_peer no-delay (#2121)
Eduard Bagdasaryan [Sat, 19 Jul 2025 20:48:12 +0000 (20:48 +0000)] 
DelayId::operator bool() should account for cache_peer no-delay (#2121)

Without this check, a DelayId::operator bool() caller could incorrectly
limit reading from a cache_peer that has been configured to ignore delay
pools. Luckily, all existing code paths that use this operator checked
the markedAsNoDelay flag, avoiding this problem:

* DelayId::bytesWanted() and DelayId::bytesIn() checked markedAsNoDelay.

* While MemObject::delayRead() itself did not check markedAsNoDelay, the
  method is not called when markedAsNoDelay is true. The analysis of the
  corresponding code paths is complex, especially for HttpStateData! We
  also call expensive mostBytesAllowed() several times on these paths.
  Refactoring this code is outside this API safety improvement scope.

This change helps avoid accidental/unwanted read delays during future
code changes.

2 months agoMaintenance: update MemBlob (#2106)
Amos Jeffries [Sat, 12 Jul 2025 14:57:06 +0000 (14:57 +0000)] 
Maintenance: update MemBlob (#2106)

Use C++11 initialization for constructors.

Update documentation for class details matching std::basic_string API.

2 months agoFix SQUID_YESNO 'syntax error near unexpected token' (#2117)
Amos Jeffries [Fri, 11 Jul 2025 13:50:50 +0000 (13:50 +0000)] 
Fix SQUID_YESNO 'syntax error near unexpected token' (#2117)

autoconf can be confused by use of commas (,) in the error
message when the SQUID_YESNO macro is followed by AC_CASE.

2 months agoBug 5499: Remove support for src_as and dst_as ACLs (#2113)
Eduard Bagdasaryan [Wed, 9 Jul 2025 19:59:39 +0000 (19:59 +0000)] 
Bug 5499: Remove support for src_as and dst_as ACLs (#2113)

Squid ACL initialization code calls asnCacheStart() and tries to connect
to an ASN server. If the configuration requires a cache_peer, that
connection fails because none of cache_peers are available an that time:

    WARNING: AS ... whois request failed

Since ASN-based ACLs are essentially unused and properly fixing this
bug requires significant effort work, we drop Autonomous System Numbers
instead. Any rare use cases may implement an external ACL helper with
similar functionality and more features.

Also removed no longer necessary radix.{c,h} code, "asndb" cache manager
report, and "asn" initiator value in transaction_initiator ACLs.

2 months agoReduce UDS/segment name clashes across same-service instances (#2023)
ankor2023 [Wed, 9 Jul 2025 17:45:19 +0000 (17:45 +0000)] 
Reduce UDS/segment name clashes across same-service instances (#2023)

Add a PID file name hash to the names of the shared memory segments and
Unix Domain Sockets. Since all instances running on the same host are
supposed to have unique PID files, this addition significantly reduces
the probability of name clashes when running multiple Squid instances
with the same service name (i.e. the same `squid -n` parameter value
that defaults to "squid").

A clash may still happen if two different PID file names have the same
hash or if multiple instances disable PID file management with
`pid_filename none`. Clashes may also happen in environments where Squid
does not even use service name for naming shared memory segments.

Examples of UDS and shared memory segment names (while using default
service name):

    /var/run/squid/squid-SLWQ-kid-1.ipc
    /var/run/squid/squid-SLWQ-coordinator.ipc
    /dev/shm/squid-SLWQ-tls_session_cache.shm
    /dev/shm/squid-SLWQ-transients_map_slices.shm

This change is a reference point for automated CONTRIBUTORS updates.

2 months agoBug 5303: document regexp dialect (#2110)
Francesco Chemolli [Wed, 9 Jul 2025 16:01:14 +0000 (16:01 +0000)] 
Bug 5303: document regexp dialect (#2110)

Squid currently uses the GNU API providing regex_t and regcomp()
with POSIX.2 implementation expected.

Squid specifically uses/requires the REG_EXTENDED pattern
matching - which is commonly referred to as "POSIX extended
regex".

2 months agoCI: drop FreeBSD 13 testing (#2112)
Francesco Chemolli [Tue, 8 Jul 2025 21:24:57 +0000 (21:24 +0000)] 
CI: drop FreeBSD 13 testing (#2112)

FreeBSD 13 packages are unreliably packaged, causing
version mismatches that lead to CI test failures:

    Newer FreeBSD version for package ztrack:
      - package: 1305000
      - running userland: 1304000
    repository FreeBSD contains packages for wrong OS version

Continue to test on FreeBSD 14 which is more reliable.

2 months agoBug 5498: cachemgr documentation improvements (#2109)
Francesco Chemolli [Sat, 5 Jul 2025 15:55:34 +0000 (15:55 +0000)] 
Bug 5498: cachemgr documentation improvements (#2109)

Be more explicit in documenting squid's well-known-prefix
for cache manager in the release notes

2 months agoSimplify appending SBuf to String (#2108)
Alex Rousskov [Mon, 30 Jun 2025 20:32:16 +0000 (20:32 +0000)] 
Simplify appending SBuf to String (#2108)

There is still a lot of code that uses legacy String class, and an
increasing amount of code that has to append modern SBufs to Strings.

SBuf handles NUL bytes better than String. With respect to handling NUL
bytes, the new append() method is as (un)safe as the existing explicit
size-based one (that callers tend to use prior to these changes anyway).

2 months agoUse RegisteredRunners for WCCP (de)activation (#2104)
Amos Jeffries [Fri, 27 Jun 2025 16:36:23 +0000 (16:36 +0000)] 
Use RegisteredRunners for WCCP (de)activation (#2104)

2 months agoBug 5497: Fix detection of duped IPs returned by getaddrinfo() (#2100)
aafbsd [Thu, 26 Jun 2025 18:57:19 +0000 (18:57 +0000)] 
Bug 5497: Fix detection of duped IPs returned by getaddrinfo() (#2100)

    WARNING: Ignoring <IP X> because it is already covered by <IP X>

Affects `src`, `dst`, and `localip` ACLs, especially those that use
domain names with multiple DNS A or AAAA records.

IP addresses returned by getaddrinfo(3) may not be sorted (e.g., when a
host has multiple DNS A RRs on FreeBSD). Instead of comparing the
current address with just the previous one, we now check all previously
added addresses (while processing a single getaddrinfo() call output).

This surgical fix minimizes changes without improving surrounding code.

2 months agoDocs: Describe cf.data.depend purpose (#2102)
Alex Rousskov [Wed, 25 Jun 2025 18:38:40 +0000 (18:38 +0000)] 
Docs: Describe cf.data.depend purpose (#2102)

2 months agoMaintenance: remove some duplicate auth code (#2097)
Amos Jeffries [Mon, 23 Jun 2025 23:11:47 +0000 (23:11 +0000)] 
Maintenance: remove some duplicate auth code (#2097)

2 months agoFix missing CONTRIBUTOR name (#2091)
Amos Jeffries [Sun, 22 Jun 2025 00:48:05 +0000 (00:48 +0000)] 
Fix missing CONTRIBUTOR name (#2091)

Despite CONTRIBUTORS file being UTF-8 Ture's name
was dropped by our conversion script which does not
handle non-ASCII characters nicely. Re-add it manually.

2 months agoDo not duplicate received Surrogate-Capability in sent requests (#2087)
Eduard Bagdasaryan [Tue, 17 Jun 2025 21:00:51 +0000 (21:00 +0000)] 
Do not duplicate received Surrogate-Capability in sent requests (#2087)

When computing Surrogate-Capability header while forwarding an
accelerated request, Squid duplicated old (i.e. received) header entries
(if any). For example, this outgoing request shows an extra hop1 entry:

    GET / HTTP/1.1
    ...
    Surrogate-Capability: hop1="Surrogate/1.0"
    Surrogate-Capability: hop1="Surrogate/1.0", hop2="Surrogate/1.0"

3 months agoCI: Update tested Linux versions to current (#2080)
Francesco Chemolli [Tue, 10 Jun 2025 06:05:06 +0000 (06:05 +0000)] 
CI: Update tested Linux versions to current (#2080)

Fedora 40 is EOL, and add CentOS Stream 10 and Ubuntu Plucky

3 months agoCI: Fix gperf 3.2 output filter (#2081)
Amos Jeffries [Mon, 9 Jun 2025 04:49:04 +0000 (04:49 +0000)] 
CI: Fix gperf 3.2 output filter (#2081)

gperf 3.2 now provides properly compiler and C++ version scoped
fallthrough attributes. Our filter to convert the gperf 3.1 and
older output for C++17 attribute requirements is now broken and
produces compiler errors due to listing '[[fallback]];' on two
consecutive lines.

3 months agoFix OpenSSL build with GCC v15.1.1 [-Wformat-truncation=] (#2077)
Francesco Chemolli [Tue, 3 Jun 2025 12:29:30 +0000 (12:29 +0000)] 
Fix OpenSSL build with GCC v15.1.1 [-Wformat-truncation=] (#2077)

On arm64 Fedora 42:

    src/ssl/crtd_message.cc:132:39: error: '%zd' directive output may be
        truncated writing between 1 and 19 bytes into a region
        of size 10 [-Werror=format-truncation=]
        snprintf(buffer, sizeof(buffer), "%zd", body.length());

3 months agoDisable EUI when arpreq is missing and cannot be defined (#2070)
Francesco Chemolli [Sat, 31 May 2025 18:40:35 +0000 (18:40 +0000)] 
Disable EUI when arpreq is missing and cannot be defined (#2070)

OpenBSD 7.7 provides a net/if_arp.h header file,
but it doesn't provide a `struct arpreq`, which
is necessary for our EUI implementation to work.

Disable EUI when arpreq definition is missing,
except on Windows where we provide our own.

3 months agoFix SNMP cacheNumObjCount -- number of cached objects (#2053)
Carl Vuosalo [Wed, 28 May 2025 19:17:38 +0000 (19:17 +0000)] 
Fix SNMP cacheNumObjCount -- number of cached objects (#2053)

SNMP counter cacheNumObjCount used StoreEntry::inUseCount() stats. For
Squid instances using a rock cache_dirs or a shared memory cache, the
number of StoreEntry objects in use is usually very different from the
number of cached objects because these caches do not use StoreEntry
objects as a part of their index. For all instances, inUseCount() also
includes ongoing transactions and internal tasks that are not related to
cached objects at all.

We now use the sum of the counters already reported on "on-disk objects"
and "Hot Object Cache Items" lines in "Internal Data Structures" section
of `mgr:info` cache manager report. Due to floating-point arithmetic,
these stats are approximate, but it is best to keep SNMP and cache
manager reports consistent.

This change does not fix SNMP Gauge32 overflow bug: Caches with 2^32 or
more objects continue to report wrong/smaller cacheNumObjCount values.

### On MemStore::getStats() and StoreInfoStats changes

To include the number of memory-cached objects while supporting SMP
configurations with shared memory caches, we had to change how cache
manager code aggregates StoreInfoStats::mem data collected from SMP
worker processes. Before these changes, `StoreInfoStats::operator +=()`
used a mem.shared data member to trigger special aggregation code hack,
but

* SNMP-specific code cannot benefit from that StoreInfoStats aggregation
  because SNMP code exchanges simple counters rather than StoreInfoStats
  objects. `StoreInfoStats::operator +=()` is never called by SNMP code.
  Instead, SNMP uses Snmp::Pdu::aggregate() and friends.

* We could not accommodate SNMP by simply adding special aggregation
  hacks directly to MemStore::getStats() because that would break
  critical "all workers report about the same stats" expectations of the
  special hack in `StoreInfoStats::operator +=()`.

To make both SNMP and cache manager use cases work, we removed the hack
from StoreInfoStats::operator +=() and hacked MemStore::getStats()
instead, making the first worker responsible for shared memory cache
stats reporting (unlike SMP rock diskers, there is no single kid process
dedicated to managing a shared memory cache). StoreInfoStats operator
now uses natural aggregation logic without hacks.

TODO: After these changes, StoreInfoStats::mem.shared becomes
essentially unused because it was only used to enable special
aggregation hack in StoreInfoStats that no longer exists. Remove?

3 months agoBug 5352: Do not get stuck in RESPMOD after pausing peer read(2) (#2065)
Eduard Bagdasaryan [Tue, 20 May 2025 18:52:04 +0000 (18:52 +0000)] 
Bug 5352: Do not get stuck in RESPMOD after pausing peer read(2) (#2065)

The transaction gets stuck if Squid, while sending virgin body bytes to
an ICAP RESPMOD service, temporary stops reading additional virgin body
bytes from cache_peer or origin server. Squid pauses reading (with
readSizeWanted becoming zero) if reading more virgin bytes is temporary
prohibited by delay pools and/or read_ahead_gap limits:

    readReply: avoid delayRead() to give adaptation a chance to drain...

HttpStateData::readReply() starts waiting for ModXact to drain the
BodyPipe buffer, but that draining may not happen, either because
ModXact::virginConsume() is not called at all[^1] or because it is
"postponing consumption" when BodyPipe still has some unused space[^2].

With HttpStateData not reading more virgin bytes, Squid may not write
more virgin body bytes to the ICAP service, and the ICAP service may not
start or continue responding to the RESPMOD request. Without that ICAP
activity, ModXact does not consume, the virgin BodyPipe buffer is not
drained, HttpStateData is not reading, and no progress is possible.

HttpStateData::readReply() should start waiting for adaptation to drain
BodyPipe only when the buffer becomes completely full (instead of when
it is not empty). This change may increase virgin response body bytes
accumulation but not the buffer capacity because existing buffer
space-increasing logic in maybeMakeSpaceAvailable() remains intact.

To prevent stalling, both BodyPipe ends (i.e. HttpStateData and
Icap::ModXact) must use matching "progress is possible" conditions, but

* HttpStateData used hasContent()
* Icap::ModXact used spaceSize()
* Ftp::Client used potentialSpaceSize()

Now, all three use matching potentialSpaceSize()-based conditions.

Squid eCAP code is unaffected by this bug, because it does not postpone
BodyPipe consumption. eCAP API does not expose virgin body buffer
capacity, so an eCAP adapter that postpones consumption risks filling
the virgin body buffer and stalling. This is an eCAP API limitation.

Broken since 2024 commit cc8b26f.

[^1]: Zero readSizeWanted is reachable without delay pools, but only if
Squid receives an adapted response (that makes readAheadPolicyCanRead()
false by filling StoreEntry). Ideally, receiving an adapted response
should result in a virginConsume() calls (that would trigger BodyPipe
draining), but currently it may not. Reliably starting virgin data
consumption sooner is not trivial and deserves a dedicated change.

[^2]: ModXact postpones consumption to preserve virgin bytes for ICAP
retries and similar purposes. ModXact believes it is safe to postpone
because there is still space left in the buffer for HttpStateData to
continue to make progress. ModXact would normally start or resume
draining the buffer when sending more virgin bytes to the ICAP service.

3 months agoMaintenance: Removed deprecated Client::replyBodySpace() (#2060)
Eduard Bagdasaryan [Sun, 18 May 2025 21:24:18 +0000 (21:24 +0000)] 
Maintenance: Removed deprecated Client::replyBodySpace() (#2060)

Except for a trivial spaceSize() call and a never-executed (for the only
caller) `space` parameter adjustment, replyBodySpace() duplicates
Client::calcBufferSpaceToReserve(). This duplication complicates
refactoring aimed at addressing other known buffer management problems.

3 months agoRemove always-zero CacheDigestGuessStats::closeHits (#2062)
Alex Rousskov [Sun, 18 May 2025 07:58:53 +0000 (07:58 +0000)] 
Remove always-zero CacheDigestGuessStats::closeHits (#2062)

The data member stopped being updated in 1998 commit 69c95dd3. It was
scheduled for removal since inception in 1998 commit 04f0c415.

3 months agoMaintenance: Remove shared LDADD (#2058)
Amos Jeffries [Sun, 18 May 2025 06:39:04 +0000 (06:39 +0000)] 
Maintenance: Remove shared LDADD (#2058)

Most built binaries have a distinct set of dependencies and already have
their own foo_LDADD variables. Add a few variables to cover the
remaining binaries and stop setting an (incomplete) LDADD global.

Also removed unnecessary EXTRA_PROGRAMS because mem_node_test and splay
binaries are built unconditionally.

3 months agoBug 5316: Release note says version 6 still for testing (#2066)
Amos Jeffries [Sun, 18 May 2025 04:57:29 +0000 (04:57 +0000)] 
Bug 5316: Release note says version 6 still for testing (#2066)

3 months agoCI: Upgrade Ubuntu runners from v22.04 to v24.04 (#2064)
Alex Rousskov [Wed, 14 May 2025 14:28:51 +0000 (14:28 +0000)] 
CI: Upgrade Ubuntu runners from v22.04 to v24.04 (#2064)

* Ubuntu 24.04 uses different apt sources file location and format.

* Some Ubuntu 24.04 GitHub Actions runners lack libltdl-dev as detailed
  at https://github.com/actions/runner-images/issues/11316.
  We could explicitly install libltdl-dev for functionality tests, but
  decided to go one step further and unify all prerequisites
  installation steps for tests that build Squid on Ubuntu.

Also added a hack to fix /etc/hosts broken on some Ubuntu runners and
resulting in Squid startup errors during functionality tests:

    kid1| ERROR: ipcacheAddEntryFromHosts: Bad IP address '-e'

4 months agoCI: Pin OpenBSD 7.6
Francesco Chemolli [Sun, 11 May 2025 10:26:36 +0000 (11:26 +0100)] 
CI: Pin OpenBSD 7.6

OpenBSD 7.7 introduces some changes that fail our build.
Pin version 7.6 while we work on version 7.7 adoption.

4 months agoCI: adopt ccache-action v1.2.17 (#2057)
Francesco Chemolli [Fri, 25 Apr 2025 11:39:25 +0000 (11:39 +0000)] 
CI: adopt ccache-action v1.2.17 (#2057)

GitHub deprecated v1 of its cache API. Adopt the latest version of
ccache-action, which uses action/cache v4.0.0, which uses cache API v2.

4 months agoDo not treat tiny virgin response buffer space specially (#2056)
Eduard Bagdasaryan [Wed, 23 Apr 2025 12:59:03 +0000 (12:59 +0000)] 
Do not treat tiny virgin response buffer space specially (#2056)

A long series of commits sprinkled Squid code with special treatment of
virgin response buffer space equal to one or two bytes:

* 2005 commit 2afaba07 adds a 2-byte hack to HttpStateData. The hack
  avoids stalling transactions by never asking
  StoreEntry::delayAwareRead() to read 1 byte.

* 2006 commit 253cacc adds the same 2-byte hack to Ftp::Client.

* 2007 commit 478cfe99 adds a 2-byte hack to
  Icap::ModXact::virginConsume() so that ICAP transactions do not stall
  when HttpStateData hack prevents new virgin bytes from being read into
  a BodyPipe buffer that has just one or two space bytes left. The ICAP
  hack was probably one-byte more aggressive than necessary...

* 2011 commit 0ad2b63b adds +1 byte hacks to ServerStateData and
  ClientHttpRequest to work around the same StoreEntry::delayAwareRead()
  problem leading to excessive buffering with slow clients.

* A followup 2012 commit 4dc2b072 adjusts StoreEntry::delayAwareRead()
  to allow 1-byte reads, making _all_ of the above hacks unnecessary.
  However, that commit only removed +1 byte hacks added in 2011, missing
  HttpStateData and ICAP hacks added in 2005, 2006 and 2007, probably
  because that 2012 work focused on fixing the bug introduced by 2011
  commit (that was triggered by slow client-Squid communication).

We now remove the remaining known hacks that worked around
StoreEntry::delayAwareRead() inability to read 1 byte (i.e. the first
three hacks on the above list).

These changes also happen to fix transaction stalls with read_ahead_gap
set to 1 and probably some other rare use cases: Transactions could
stall because inBuf.spaceSize() may be 1 for an emptied inBuf, leading
to maybeMakeSpaceAvailable() returning zero due to `read_size < 2` being
true. That zero result prevents HttpStateData from making progress by
reading new virgin response bytes. Mistreatment of "emptied inBuf" cases
was exposed by 2023 commit 50c5af88 changes. More work is needed to
address other, more prominent "emptied inBuf" cases.

4 months agoSource Format Enforcement (#2042)
squidadm [Sun, 20 Apr 2025 18:15:06 +0000 (18:15 +0000)] 
Source Format Enforcement (#2042)

4 months agoBug 5279: FwdState.cc:279: "!storedWholeReply_" assertion (#2052)
Eduard Bagdasaryan [Mon, 14 Apr 2025 09:40:33 +0000 (09:40 +0000)] 
Bug 5279: FwdState.cc:279: "!storedWholeReply_" assertion (#2052)

This assertion may be triggered when RESPMOD adaptation is aborted
(e.g., when an essential ICAP service is down, or when it sends an ICAP
response status code unsupported by Squid).

Ftp::Relay::forwardReply() calls markParsedVirginReplyAsWhole() before
adaptOrFinalizeReply(). Thus, at that markParsedVirginReplyAsWhole()
call time, startedAdaptation remained false, markStoredReplyAsWhole()
was called, and storedWholeReply_ became true. If Squid then decided to
start adaptation, but that adaptation had failed, FwdState::completed()
detected a mismatch between true storedWholeReply_ and a still-empty
STORE_PENDING StoreEntry. This bug was added in 2021 commit ba3fe8d.

Squid does not write virgin response to Store while adaptation_access
check is pending or after RESPMOD adaptation has started. Code that does
not write to Store must not make storedWholeReply_ true. On the other
hand, after adaptation_access is denied, and Squid finishes storing all
virgin response bytes, Squid needs to know whether storedWholeReply_
should be set (i.e. whether Squid has received the whole virgin reply
and called markParsedVirginReplyAsWhole()). This fix adds
Client::markedParsedVirginReplyAsWhole to remember the latter event.

5 months agoBug 5489: Fix "make check" linking on Solaris (#2049)
Francesco Chemolli [Sun, 13 Apr 2025 22:56:57 +0000 (22:56 +0000)] 
Bug 5489: Fix "make check" linking on Solaris (#2049)

Change link order of libcomm and libip to fix missing symbols at link
time on Solaris:

    libtool: link: /usr/gcc/14/bin/g++ ... -o tests/testCacheManager
    _ZN2Ip11InterceptorE ... libcomm.a
    _ZN2Ip9Intercept9LookupNatERKN4Comm10ConnectionE ... libcomm.a
    ld: fatal: symbol referencing errors

5 months agoCI: update FreeBSD version (#2051)
Francesco Chemolli [Sun, 13 Apr 2025 21:11:46 +0000 (21:11 +0000)] 
CI: update FreeBSD version (#2051)

The FreeBSD project has promoted version 14.2 to stable.
Some packages we use are not compatible with version 14.1.
Upgrade the reference version we use, the action supports it

5 months agoMinGW: Fix aiops_win32.cc (#2030)
Francesco Chemolli [Fri, 28 Mar 2025 19:15:46 +0000 (19:15 +0000)] 
MinGW: Fix aiops_win32.cc (#2030)

Fixed missing includes, type mismatches in some
local variables, applied some AAA;
extracted WIN32_maperror
into own header and implementation files using NoMoreGlobals,
and used modern c++ data types for it.

This change also mirrors changes introduced in aiops.cc by commit
91d1cfb. These changes require further refinement (in both files).

Examples of errors fixed:
```
aiops_win32.cc: In function
    'void* squidaio_xmalloc(int)':
aiops_win32.cc:161:17: error:
    invalid use of incomplete type 'class Mem::Allocator'

aiops_win32.cc: In function 'void squidaio_init()':
aiops_win32.cc:278:19: error:
    comparison of integer expressions of different signedness:
    'int' and 'size_t' {aka 'long long unsigned int'}

aiops_win32.cc: In function
    'void squidaio_do_read(squidaio_request_t*)':
aiops_win32.cc:782:9: error:
    'WIN32_maperror' was not declared in this scope
```

5 months agoRemove unused scHeaderStats global (#2039)
Amos Jeffries [Fri, 28 Mar 2025 17:49:15 +0000 (17:49 +0000)] 
Remove unused scHeaderStats global (#2039)