diff -u -r -N squid-6.8/ChangeLog squid-6.9/ChangeLog --- squid-6.8/ChangeLog 2024-03-04 05:45:51.000000000 +0000 +++ squid-6.9/ChangeLog 2024-04-08 05:02:07.000000000 +0000 @@ -1,3 +1,12 @@ +Changes in squid-6.9 (7 Apr 2024) + - Regression Bug 5349: basic_nis_auth build error: unterminated #ifndef + - Bug 5069: Keep listening after getsockname() error + - Bug 5360: FwdState::noteDestinationsEnd() assertion "err" + - Reduce stale errno usage + - Plug memory leak in handling cache manager requests + - Fix error: template-id not allowed for constructor in C++20 + - Improve release packaging automation + Changes in squid-6.8 (4 Mar 2024) - Bug 5344: mgr:config segfaults without logformat diff -u -r -N squid-6.8/configure squid-6.9/configure --- squid-6.8/configure 2024-03-04 05:50:28.000000000 +0000 +++ squid-6.9/configure 2024-04-08 05:54:08.000000000 +0000 @@ -1,7 +1,7 @@ #! /bin/sh # From configure.ac Revision. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for Squid Web Proxy 6.8. +# Generated by GNU Autoconf 2.71 for Squid Web Proxy 6.9. # # Report bugs to . # @@ -626,8 +626,8 @@ # Identity of this package. PACKAGE_NAME='Squid Web Proxy' PACKAGE_TARNAME='squid' -PACKAGE_VERSION='6.8' -PACKAGE_STRING='Squid Web Proxy 6.8' +PACKAGE_VERSION='6.9' +PACKAGE_STRING='Squid Web Proxy 6.9' PACKAGE_BUGREPORT='https://bugs.squid-cache.org/' PACKAGE_URL='' @@ -1695,7 +1695,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Squid Web Proxy 6.8 to adapt to many kinds of systems. +\`configure' configures Squid Web Proxy 6.9 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1766,7 +1766,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Squid Web Proxy 6.8:";; + short | recursive ) echo "Configuration of Squid Web Proxy 6.9:";; esac cat <<\_ACEOF @@ -2186,7 +2186,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Squid Web Proxy configure 6.8 +Squid Web Proxy configure 6.9 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -3199,7 +3199,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Squid Web Proxy $as_me 6.8, which was +It was created by Squid Web Proxy $as_me 6.9, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -4691,7 +4691,7 @@ # Define the identity of the package. PACKAGE='squid' - VERSION='6.8' + VERSION='6.9' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -56708,7 +56708,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Squid Web Proxy $as_me 6.8, which was +This file was extended by Squid Web Proxy $as_me 6.9, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -56776,7 +56776,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -Squid Web Proxy config.status 6.8 +Squid Web Proxy config.status 6.9 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\" diff -u -r -N squid-6.8/configure.ac squid-6.9/configure.ac --- squid-6.8/configure.ac 2024-03-04 05:50:28.000000000 +0000 +++ squid-6.9/configure.ac 2024-04-08 05:54:08.000000000 +0000 @@ -5,7 +5,7 @@ ## Please see the COPYING and CONTRIBUTORS files for details. ## -AC_INIT([Squid Web Proxy],[6.8],[https://bugs.squid-cache.org/],[squid]) +AC_INIT([Squid Web Proxy],[6.9],[https://bugs.squid-cache.org/],[squid]) AC_PREREQ(2.61) AC_CONFIG_HEADERS([include/autoconf.h]) AC_CONFIG_AUX_DIR(cfgaux) diff -u -r -N squid-6.8/doc/release-notes/release-6.html squid-6.9/doc/release-notes/release-6.html --- squid-6.8/doc/release-notes/release-6.html 2024-03-04 06:02:37.000000000 +0000 +++ squid-6.9/doc/release-notes/release-6.html 2024-04-08 06:05:38.000000000 +0000 @@ -3,10 +3,10 @@ - Squid 6.8 release notes + Squid 6.9 release notes -

Squid 6.8 release notes

+

Squid 6.9 release notes

Squid Developers

@@ -59,7 +59,7 @@


1. Notice

-

The Squid Team are pleased to announce the release of Squid-6.8 for testing.

+

The Squid Team are pleased to announce the release of Squid-6.9 for testing.

This new release is available for download from http://www.squid-cache.org/Versions/v6/ or the mirrors.

diff -u -r -N squid-6.8/include/splay.h squid-6.9/include/splay.h --- squid-6.8/include/splay.h 2024-03-04 05:45:51.000000000 +0000 +++ squid-6.9/include/splay.h 2024-04-08 05:02:07.000000000 +0000 @@ -23,7 +23,7 @@ typedef void SPLAYWALKEE(Value const & nodedata, void *state); static void DefaultFree (Value &aValue) {delete aValue;} - SplayNode (Value const &); + SplayNode(const Value &); Value data; mutable SplayNode *left; mutable SplayNode *right; diff -u -r -N squid-6.8/include/version.h squid-6.9/include/version.h --- squid-6.8/include/version.h 2024-03-04 05:50:28.000000000 +0000 +++ squid-6.9/include/version.h 2024-04-08 05:54:08.000000000 +0000 @@ -10,7 +10,7 @@ #define SQUID_INCLUDE_VERSION_H #ifndef SQUID_RELEASE_TIME -#define SQUID_RELEASE_TIME 1709531399 +#define SQUID_RELEASE_TIME 1712555627 #endif /* diff -u -r -N squid-6.8/RELEASENOTES.html squid-6.9/RELEASENOTES.html --- squid-6.8/RELEASENOTES.html 2024-03-04 06:02:37.000000000 +0000 +++ squid-6.9/RELEASENOTES.html 2024-04-08 06:05:38.000000000 +0000 @@ -3,10 +3,10 @@ - Squid 6.8 release notes + Squid 6.9 release notes -

Squid 6.8 release notes

+

Squid 6.9 release notes

Squid Developers

@@ -59,7 +59,7 @@


1. Notice

-

The Squid Team are pleased to announce the release of Squid-6.8 for testing.

+

The Squid Team are pleased to announce the release of Squid-6.9 for testing.

This new release is available for download from http://www.squid-cache.org/Versions/v6/ or the mirrors.

diff -u -r -N squid-6.8/src/acl/external/delayer/ext_delayer_acl.8 squid-6.9/src/acl/external/delayer/ext_delayer_acl.8 --- squid-6.8/src/acl/external/delayer/ext_delayer_acl.8 2024-03-04 06:02:48.000000000 +0000 +++ squid-6.9/src/acl/external/delayer/ext_delayer_acl.8 2024-04-08 06:05:44.000000000 +0000 @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "EXT_DELAYER_ACL 8" -.TH EXT_DELAYER_ACL 8 "2024-03-04" "perl v5.34.0" "User Contributed Perl Documentation" +.TH EXT_DELAYER_ACL 8 "2024-04-08" "perl v5.34.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -u -r -N squid-6.8/src/acl/external/kerberos_sid_group/ext_kerberos_sid_group_acl.8 squid-6.9/src/acl/external/kerberos_sid_group/ext_kerberos_sid_group_acl.8 --- squid-6.8/src/acl/external/kerberos_sid_group/ext_kerberos_sid_group_acl.8 2024-03-04 06:02:49.000000000 +0000 +++ squid-6.9/src/acl/external/kerberos_sid_group/ext_kerberos_sid_group_acl.8 2024-04-08 06:05:44.000000000 +0000 @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "EXT_KERBEROS_SID_GROUP_ACL 8" -.TH EXT_KERBEROS_SID_GROUP_ACL 8 "2024-03-04" "perl v5.34.0" "User Contributed Perl Documentation" +.TH EXT_KERBEROS_SID_GROUP_ACL 8 "2024-04-08" "perl v5.34.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -u -r -N squid-6.8/src/acl/external/SQL_session/ext_sql_session_acl.8 squid-6.9/src/acl/external/SQL_session/ext_sql_session_acl.8 --- squid-6.8/src/acl/external/SQL_session/ext_sql_session_acl.8 2024-03-04 06:02:50.000000000 +0000 +++ squid-6.9/src/acl/external/SQL_session/ext_sql_session_acl.8 2024-04-08 06:05:44.000000000 +0000 @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "EXT_SQL_SESSION_ACL 8" -.TH EXT_SQL_SESSION_ACL 8 "2024-03-04" "perl v5.34.0" "User Contributed Perl Documentation" +.TH EXT_SQL_SESSION_ACL 8 "2024-04-08" "perl v5.34.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -u -r -N squid-6.8/src/acl/external/wbinfo_group/ext_wbinfo_group_acl.8 squid-6.9/src/acl/external/wbinfo_group/ext_wbinfo_group_acl.8 --- squid-6.8/src/acl/external/wbinfo_group/ext_wbinfo_group_acl.8 2024-03-04 06:02:50.000000000 +0000 +++ squid-6.9/src/acl/external/wbinfo_group/ext_wbinfo_group_acl.8 2024-04-08 06:05:44.000000000 +0000 @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "EXT_WBINFO_GROUP_ACL 8" -.TH EXT_WBINFO_GROUP_ACL 8 "2024-03-04" "perl v5.34.0" "User Contributed Perl Documentation" +.TH EXT_WBINFO_GROUP_ACL 8 "2024-04-08" "perl v5.34.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -u -r -N squid-6.8/src/auth/basic/DB/basic_db_auth.8 squid-6.9/src/auth/basic/DB/basic_db_auth.8 --- squid-6.8/src/auth/basic/DB/basic_db_auth.8 2024-03-04 06:02:55.000000000 +0000 +++ squid-6.9/src/auth/basic/DB/basic_db_auth.8 2024-04-08 06:05:46.000000000 +0000 @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "BASIC_DB_AUTH 8" -.TH BASIC_DB_AUTH 8 "2024-03-04" "perl v5.34.0" "User Contributed Perl Documentation" +.TH BASIC_DB_AUTH 8 "2024-04-08" "perl v5.34.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -u -r -N squid-6.8/src/auth/basic/NIS/nis_support.h squid-6.9/src/auth/basic/NIS/nis_support.h --- squid-6.8/src/auth/basic/NIS/nis_support.h 2024-03-04 05:45:51.000000000 +0000 +++ squid-6.9/src/auth/basic/NIS/nis_support.h 2024-04-08 05:02:07.000000000 +0000 @@ -8,9 +8,6 @@ #ifndef SQUID_SRC_AUTH_BASIC_NIS_NIS_SUPPORT_H #define SQUID_SRC_AUTH_BASIC_NIS_NIS_SUPPORT_H -#ifndef SQUID_SRC_AUTH_BASIC_NIS_NIS_SUPPORT_H -#define SQUID_SRC_AUTH_BASIC_NIS_NIS_SUPPORT_H - extern char * get_nis_password(char *user, char *nisdomain, char *nismap); #endif /* SQUID_SRC_AUTH_BASIC_NIS_NIS_SUPPORT_H */ diff -u -r -N squid-6.8/src/auth/basic/POP3/basic_pop3_auth.8 squid-6.9/src/auth/basic/POP3/basic_pop3_auth.8 --- squid-6.8/src/auth/basic/POP3/basic_pop3_auth.8 2024-03-04 06:02:56.000000000 +0000 +++ squid-6.9/src/auth/basic/POP3/basic_pop3_auth.8 2024-04-08 06:05:47.000000000 +0000 @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "BASIC_POP3_AUTH 8" -.TH BASIC_POP3_AUTH 8 "2024-03-04" "perl v5.34.0" "User Contributed Perl Documentation" +.TH BASIC_POP3_AUTH 8 "2024-04-08" "perl v5.34.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -u -r -N squid-6.8/src/cache_manager.cc squid-6.9/src/cache_manager.cc --- squid-6.8/src/cache_manager.cc 2024-03-04 05:45:51.000000000 +0000 +++ squid-6.9/src/cache_manager.cc 2024-04-08 05:02:07.000000000 +0000 @@ -484,13 +484,13 @@ response.header.putExt("Access-Control-Expose-Headers", "Server"); } - std::unique_ptr cc(new HttpHdrCc()); + HttpHdrCc cc; // this is honored by more caches but allows pointless revalidation; // revalidation will always fail because we do not support it (yet?) - cc->noCache(String()); + cc.noCache(String()); // this is honored by fewer caches but prohibits pointless revalidation - cc->noStore(true); - response.putCc(cc.release()); + cc.noStore(true); + response.putCc(cc); } CacheManager* diff -u -r -N squid-6.8/src/comm/TcpAcceptor.cc squid-6.9/src/comm/TcpAcceptor.cc --- squid-6.8/src/comm/TcpAcceptor.cc 2024-03-04 05:45:51.000000000 +0000 +++ squid-6.9/src/comm/TcpAcceptor.cc 2024-04-08 05:02:07.000000000 +0000 @@ -381,7 +381,10 @@ if (getsockname(sock, gai->ai_addr, &gai->ai_addrlen) != 0) { int xerrno = errno; Ip::Address::FreeAddr(gai); - throw TextException(ToSBuf("getsockname() failed to locate local-IP on ", details, ": ", xstrerr(xerrno)), Here()); + debugs(50, DBG_IMPORTANT, "ERROR: Closing accepted TCP connection after failing to obtain its local IP address" << + Debug::Extra << "accepted connection: " << details << + Debug::Extra << "getsockname(2) error: " << xstrerr(xerrno)); + return false; } details->local = *gai; Ip::Address::FreeAddr(gai); diff -u -r -N squid-6.8/src/comm.cc squid-6.9/src/comm.cc --- squid-6.8/src/comm.cc 2024-03-04 05:45:51.000000000 +0000 +++ squid-6.9/src/comm.cc 2024-04-08 05:02:07.000000000 +0000 @@ -378,7 +378,7 @@ debugs(50, 3, "comm_openex: Attempt open socket for: " << addr ); new_socket = socket(AI->ai_family, AI->ai_socktype, AI->ai_protocol); - int xerrno = errno; + const auto firstErrNo = errno; /* under IPv6 there is the possibility IPv6 is present but disabled. */ /* try again as IPv4-native if possible */ @@ -391,6 +391,8 @@ AI->ai_protocol = proto; debugs(50, 3, "Attempt fallback open socket for: " << addr ); new_socket = socket(AI->ai_family, AI->ai_socktype, AI->ai_protocol); + // TODO: Report failures of this second socket() call. + // if both socket() calls fail, we use firstErrNo debugs(50, 2, "attempt open " << note << " socket on: " << addr); } @@ -399,16 +401,16 @@ * are failing because the open file table is full. This * limits the number of simultaneous clients */ - if (limitError(errno)) { - debugs(50, DBG_IMPORTANT, MYNAME << "socket failure: " << xstrerr(xerrno)); + if (limitError(firstErrNo)) { + debugs(50, DBG_IMPORTANT, MYNAME << "socket failure: " << xstrerr(firstErrNo)); fdAdjustReserved(); } else { - debugs(50, DBG_CRITICAL, MYNAME << "socket failure: " << xstrerr(xerrno)); + debugs(50, DBG_CRITICAL, MYNAME << "socket failure: " << xstrerr(firstErrNo)); } Ip::Address::FreeAddr(AI); - errno = xerrno; // restore for caller + errno = firstErrNo; // restore for caller return -1; } @@ -434,7 +436,9 @@ // XXX transition only. prevent conn from closing the new FD on function exit. conn->fd = -1; - errno = xerrno; // restore for caller + // XXX: firstErrNo is not applicable here -- socket() calls succeeded above! + // TODO: Stop reporting error codes via errno. + errno = firstErrNo; return new_socket; } @@ -890,11 +894,11 @@ // notify read/write handlers after canceling select reservations, if any if (COMMIO_FD_WRITECB(fd)->active()) { Comm::SetSelect(fd, COMM_SELECT_WRITE, nullptr, nullptr, 0); - COMMIO_FD_WRITECB(fd)->finish(Comm::ERR_CLOSING, errno); + COMMIO_FD_WRITECB(fd)->finish(Comm::ERR_CLOSING, 0); } if (COMMIO_FD_READCB(fd)->active()) { Comm::SetSelect(fd, COMM_SELECT_READ, nullptr, nullptr, 0); - COMMIO_FD_READCB(fd)->finish(Comm::ERR_CLOSING, errno); + COMMIO_FD_READCB(fd)->finish(Comm::ERR_CLOSING, 0); } #if USE_DELAY_POOLS diff -u -r -N squid-6.8/src/fs_io.cc squid-6.9/src/fs_io.cc --- squid-6.8/src/fs_io.cc 2024-03-04 05:45:51.000000000 +0000 +++ squid-6.9/src/fs_io.cc 2024-04-08 05:02:07.000000000 +0000 @@ -211,6 +211,7 @@ len = FD_WRITE_METHOD(fd, fdd->write_q->buf + fdd->write_q->buf_offset, fdd->write_q->len - fdd->write_q->buf_offset); + const auto xerrno = errno; debugs(6, 3, "diskHandleWrite: FD " << fd << " len = " << len); @@ -219,9 +220,8 @@ fd_bytes(fd, len, FD_WRITE); if (len < 0) { - if (!ignoreErrno(errno)) { - status = errno == ENOSPC ? DISK_NO_SPACE_LEFT : DISK_ERROR; - int xerrno = errno; + if (!ignoreErrno(xerrno)) { + status = xerrno == ENOSPC ? DISK_NO_SPACE_LEFT : DISK_ERROR; debugs(50, DBG_IMPORTANT, "ERROR: diskHandleWrite: FD " << fd << ": disk write failure: " << xstrerr(xerrno)); /* @@ -494,7 +494,7 @@ return true; int xerrno = errno; - debugs(21, (errno == ENOENT ? 2 : DBG_IMPORTANT), "ERROR: Cannot rename " << from << " to " << to << ": " << xstrerr(xerrno)); + debugs(21, (xerrno == ENOENT ? 2 : DBG_IMPORTANT), "ERROR: Cannot rename " << from << " to " << to << ": " << xstrerr(xerrno)); return false; } diff -u -r -N squid-6.8/src/ftp/Elements.cc squid-6.9/src/ftp/Elements.cc --- squid-6.8/src/ftp/Elements.cc 2024-03-04 05:45:51.000000000 +0000 +++ squid-6.9/src/ftp/Elements.cc 2024-04-08 05:02:07.000000000 +0000 @@ -40,7 +40,7 @@ { HttpHdrCc cc; cc.Private(String()); - header.putCc(&cc); + header.putCc(cc); } if (ftpStatus > 0) header.putInt(Http::HdrType::FTP_STATUS, ftpStatus); diff -u -r -N squid-6.8/src/FwdState.cc squid-6.9/src/FwdState.cc --- squid-6.8/src/FwdState.cc 2024-03-04 05:45:51.000000000 +0000 +++ squid-6.9/src/FwdState.cc 2024-04-08 05:02:07.000000000 +0000 @@ -657,7 +657,13 @@ } // destinationsFound, but none of them worked, and we were waiting for more - assert(err); + debugs(17, 7, "no more destinations to try after " << n_tries << " failed attempts"); + if (!err) { + const auto finalError = new ErrorState(ERR_CANNOT_FORWARD, Http::scBadGateway, request, al); + static const auto d = MakeNamedErrorDetail("REFORWARD_TO_NONE"); + finalError->detailError(d); + fail(finalError); + } // else use actual error from last forwarding attempt stopAndDestroy("all found paths have failed"); } diff -u -r -N squid-6.8/src/http/Message.cc squid-6.9/src/http/Message.cc --- squid-6.8/src/http/Message.cc 2024-03-04 05:45:51.000000000 +0000 +++ squid-6.9/src/http/Message.cc 2024-04-08 05:02:07.000000000 +0000 @@ -30,22 +30,11 @@ } void -Http::Message::putCc(const HttpHdrCc *otherCc) +Http::Message::putCc(const HttpHdrCc &otherCc) { - // get rid of the old CC, if any - if (cache_control) { - delete cache_control; - cache_control = nullptr; - if (!otherCc) - header.delById(Http::HdrType::CACHE_CONTROL); - // else it will be deleted inside putCc() below - } - - // add new CC, if any - if (otherCc) { - cache_control = new HttpHdrCc(*otherCc); - header.putCc(cache_control); - } + delete cache_control; + cache_control = new HttpHdrCc(otherCc); + header.putCc(*cache_control); } /* find first CRLF */ diff -u -r -N squid-6.8/src/http/Message.h squid-6.9/src/http/Message.h --- squid-6.8/src/http/Message.h 2024-03-04 05:45:51.000000000 +0000 +++ squid-6.9/src/http/Message.h 2024-04-08 05:02:07.000000000 +0000 @@ -98,8 +98,9 @@ uint32_t sources = 0; ///< The message sources - /// copies Cache-Control header to this message - void putCc(const HttpHdrCc *otherCc); + /// copies Cache-Control header to this message, + /// overwriting existing Cache-Control header(s), if any + void putCc(const HttpHdrCc &); // returns true and sets hdr_sz on success // returns false and sets *error to zero when needs more data diff -u -r -N squid-6.8/src/http/url_rewriters/LFS/url_lfs_rewrite.8 squid-6.9/src/http/url_rewriters/LFS/url_lfs_rewrite.8 --- squid-6.8/src/http/url_rewriters/LFS/url_lfs_rewrite.8 2024-03-04 06:02:59.000000000 +0000 +++ squid-6.9/src/http/url_rewriters/LFS/url_lfs_rewrite.8 2024-04-08 06:05:48.000000000 +0000 @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "URL_LFS_REWRITE 8" -.TH URL_LFS_REWRITE 8 "2024-03-04" "perl v5.34.0" "User Contributed Perl Documentation" +.TH URL_LFS_REWRITE 8 "2024-04-08" "perl v5.34.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -u -r -N squid-6.8/src/http.cc squid-6.9/src/http.cc --- squid-6.8/src/http.cc 2024-03-04 05:45:51.000000000 +0000 +++ squid-6.9/src/http.cc 2024-04-08 05:02:07.000000000 +0000 @@ -2032,7 +2032,7 @@ if (flags.only_if_cached) cc->onlyIfCached(true); - hdr_out->putCc(cc); + hdr_out->putCc(*cc); delete cc; } diff -u -r -N squid-6.8/src/HttpHeader.cc squid-6.9/src/HttpHeader.cc --- squid-6.8/src/HttpHeader.cc 2024-03-04 05:45:51.000000000 +0000 +++ squid-6.9/src/HttpHeader.cc 2024-04-08 05:02:07.000000000 +0000 @@ -1040,15 +1040,14 @@ } void -HttpHeader::putCc(const HttpHdrCc * cc) +HttpHeader::putCc(const HttpHdrCc &cc) { - assert(cc); /* remove old directives if any */ delById(Http::HdrType::CACHE_CONTROL); /* pack into mb */ MemBuf mb; mb.init(); - cc->packInto(&mb); + cc.packInto(&mb); /* put */ addEntry(new HttpHeaderEntry(Http::HdrType::CACHE_CONTROL, SBuf(), mb.buf)); /* cleanup */ diff -u -r -N squid-6.8/src/HttpHeader.h squid-6.9/src/HttpHeader.h --- squid-6.8/src/HttpHeader.h 2024-03-04 05:45:51.000000000 +0000 +++ squid-6.9/src/HttpHeader.h 2024-04-08 05:02:07.000000000 +0000 @@ -137,7 +137,7 @@ void putTime(Http::HdrType id, time_t htime); void putStr(Http::HdrType id, const char *str); void putAuth(const char *auth_scheme, const char *realm); - void putCc(const HttpHdrCc * cc); + void putCc(const HttpHdrCc &cc); void putContRange(const HttpHdrContRange * cr); void putRange(const HttpHdrRange * range); void putSc(HttpHdrSc *sc); diff -u -r -N squid-6.8/src/HttpReply.cc squid-6.9/src/HttpReply.cc --- squid-6.8/src/HttpReply.cc 2024-03-04 05:45:51.000000000 +0000 +++ squid-6.9/src/HttpReply.cc 2024-04-08 05:02:07.000000000 +0000 @@ -148,7 +148,8 @@ rv->header.addEntry(e->clone()); } - rv->putCc(cache_control); + if (cache_control) + rv->putCc(*cache_control); /* rv->body */ return rv; diff -u -r -N squid-6.8/src/log/DB/log_db_daemon.8 squid-6.9/src/log/DB/log_db_daemon.8 --- squid-6.8/src/log/DB/log_db_daemon.8 2024-03-04 06:03:00.000000000 +0000 +++ squid-6.9/src/log/DB/log_db_daemon.8 2024-04-08 06:05:49.000000000 +0000 @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "LOG_DB_DAEMON 8" -.TH LOG_DB_DAEMON 8 "2024-03-04" "perl v5.34.0" "User Contributed Perl Documentation" +.TH LOG_DB_DAEMON 8 "2024-04-08" "perl v5.34.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -u -r -N squid-6.8/src/mime.cc squid-6.9/src/mime.cc --- squid-6.8/src/mime.cc 2024-03-04 05:45:51.000000000 +0000 +++ squid-6.9/src/mime.cc 2024-04-08 05:02:07.000000000 +0000 @@ -421,7 +421,7 @@ reply->setHeaders(status, nullptr, mimeGetContentType(icon_.c_str()), sb.st_size, sb.st_mtime, -1); reply->cache_control = new HttpHdrCc(); reply->cache_control->maxAge(86400); - reply->header.putCc(reply->cache_control); + reply->header.putCc(*reply->cache_control); e->replaceHttpReply(reply.getRaw()); if (status == Http::scOkay) { diff -u -r -N squid-6.8/src/security/cert_validators/fake/security_fake_certverify.8 squid-6.9/src/security/cert_validators/fake/security_fake_certverify.8 --- squid-6.8/src/security/cert_validators/fake/security_fake_certverify.8 2024-03-04 06:03:03.000000000 +0000 +++ squid-6.9/src/security/cert_validators/fake/security_fake_certverify.8 2024-04-08 06:05:50.000000000 +0000 @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "SECURITY_FAKE_CERTVERIFY 8" -.TH SECURITY_FAKE_CERTVERIFY 8 "2024-03-04" "perl v5.34.0" "User Contributed Perl Documentation" +.TH SECURITY_FAKE_CERTVERIFY 8 "2024-04-08" "perl v5.34.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -u -r -N squid-6.8/src/store/id_rewriters/file/storeid_file_rewrite.8 squid-6.9/src/store/id_rewriters/file/storeid_file_rewrite.8 --- squid-6.8/src/store/id_rewriters/file/storeid_file_rewrite.8 2024-03-04 06:02:52.000000000 +0000 +++ squid-6.9/src/store/id_rewriters/file/storeid_file_rewrite.8 2024-04-08 06:05:45.000000000 +0000 @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "STOREID_FILE_REWRITE 8" -.TH STOREID_FILE_REWRITE 8 "2024-03-04" "perl v5.34.0" "User Contributed Perl Documentation" +.TH STOREID_FILE_REWRITE 8 "2024-04-08" "perl v5.34.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l diff -u -r -N squid-6.8/src/tests/stub_HttpHeader.cc squid-6.9/src/tests/stub_HttpHeader.cc --- squid-6.8/src/tests/stub_HttpHeader.cc 2024-03-04 05:45:51.000000000 +0000 +++ squid-6.9/src/tests/stub_HttpHeader.cc 2024-04-08 05:02:07.000000000 +0000 @@ -59,7 +59,7 @@ void HttpHeader::putTime(Http::HdrType, time_t) STUB void HttpHeader::putStr(Http::HdrType, const char *) STUB void HttpHeader::putAuth(const char *, const char *) STUB -void HttpHeader::putCc(const HttpHdrCc *) STUB +void HttpHeader::putCc(const HttpHdrCc &) STUB void HttpHeader::putContRange(const HttpHdrContRange *) STUB void HttpHeader::putRange(const HttpHdrRange *) STUB void HttpHeader::putSc(HttpHdrSc *) STUB diff -u -r -N squid-6.8/src/tests/stub_libhttp.cc squid-6.9/src/tests/stub_libhttp.cc --- squid-6.8/src/tests/stub_libhttp.cc 2024-03-04 05:45:51.000000000 +0000 +++ squid-6.9/src/tests/stub_libhttp.cc 2024-04-08 05:02:07.000000000 +0000 @@ -42,7 +42,7 @@ void Message::packInto(Packable *, bool) const STUB void Message::setContentLength(int64_t) STUB bool Message::persistent() const STUB_RETVAL(false) -void Message::putCc(const HttpHdrCc *) STUB +void Message::putCc(const HttpHdrCc &) STUB bool Message::parse(const char *, const size_t, bool, Http::StatusCode *) STUB_RETVAL(false) bool Message::parseCharBuf(const char *, ssize_t) STUB_RETVAL(false) int Message::httpMsgParseStep(const char *, int, int) STUB_RETVAL(-1) diff -u -r -N squid-6.8/src/tunnel.cc squid-6.9/src/tunnel.cc --- squid-6.8/src/tunnel.cc 2024-03-04 05:45:51.000000000 +0000 +++ squid-6.9/src/tunnel.cc 2024-04-08 05:02:07.000000000 +0000 @@ -1364,7 +1364,15 @@ } // destinationsFound, but none of them worked, and we were waiting for more - assert(savedError); + debugs(17, 7, "no more destinations to try after " << n_tries << " failed attempts"); + if (!savedError) { + // retryOrBail() must be preceded by saveError(), but in case we forgot: + const auto finalError = new ErrorState(ERR_CANNOT_FORWARD, Http::scBadGateway, request.getRaw(), al); + static const auto d = MakeNamedErrorDetail("RETRY_TO_NONE"); + finalError->detailError(d); + saveError(finalError); + } // else use actual error from last forwarding attempt + // XXX: Honor clientExpectsConnectResponse() before replying. sendError(savedError, "all found paths have failed"); } diff -u -r -N squid-6.8/tools/helper-mux/helper-mux.8 squid-6.9/tools/helper-mux/helper-mux.8 --- squid-6.8/tools/helper-mux/helper-mux.8 2024-03-04 06:03:05.000000000 +0000 +++ squid-6.9/tools/helper-mux/helper-mux.8 2024-04-08 06:05:51.000000000 +0000 @@ -133,7 +133,7 @@ .\" ======================================================================== .\" .IX Title "HELPER-MUX 8" -.TH HELPER-MUX 8 "2024-03-04" "perl v5.34.0" "User Contributed Perl Documentation" +.TH HELPER-MUX 8 "2024-04-08" "perl v5.34.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l