]> git.ipfire.org Git - thirdparty/squid.git/blob - doc/release-notes/release-6.sgml
Prep for 6.0.1 (#1263)
[thirdparty/squid.git] / doc / release-notes / release-6.sgml
1 <!doctype linuxdoc system>
2 <article>
3 <title>Squid 6.0.1 release notes</title>
4 <author>Squid Developers</author>
5
6 <abstract>
7 This document contains the release notes for version 6 of Squid.
8 Squid is a WWW Cache application developed by the National Laboratory
9 for Applied Network Research and members of the Web Caching community.
10 </abstract>
11
12 <toc>
13
14
15 <sect>Notice
16 <p>The Squid Team are pleased to announce the release of Squid-6.0.1 for testing.
17
18 This new release is available for download from <url url="http://www.squid-cache.org/Versions/v6/"> or the
19 <url url="http://www.squid-cache.org/Download/http-mirrors.html" name="mirrors">.
20
21 <p>While this release is not deemed ready for production use, we believe it is ready for wider testing by the community.
22
23 <p>We welcome feedback and bug reports. If you find a bug, please see <url url="http://wiki.squid-cache.org/SquidFaq/BugReporting">
24 for how to submit a report with a stack trace.
25
26 <sect1>Known issues
27 <p>Although this release is deemed good enough for use in many setups, please note the existence of
28 <url url="http://bugs.squid-cache.org/buglist.cgi?query_format=advanced&amp;product=Squid&amp;bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;version=6" name="open bugs against Squid-6">.
29
30 <p>Support for compiling on HPUX with the native HP <em>xcc</em> compiler has been removed.
31 To build on that OS/compiler combination, it is possible to pass these environment variables
32 to ./configure: <em>CC="cxx -Ae" RANLIB=":"</em>
33
34 <p>This release adds a dependency on C++17 support in any compiler used to build Squid.
35 GCC 8+ and Clang 8+ support C++17.
36
37 <sect1>Changes since earlier releases of Squid-6
38 <p>
39 The Squid-6 change history can be <url url="https://github.com/squid-cache/squid/commits/v6" name="viewed here">.
40
41
42 <sect>Major new features since Squid-5
43 <p>Squid-6 represents a new feature release above Squid-5.
44
45 <p>The most important of these new features are:
46 <itemize>
47 <item>TLS ServerHello
48 <item>Log TLS Communication Secrets
49 <item>Ban ACL key Changes in ACLs
50 <item>Block to-local Traffic
51 <item>RFC 9211: HTTP Cache-Status support
52 <item>RFC 9111: Stop treating Warning specially
53 <item>ext_kerberos_ldap_group_acl: Support -b with -D
54 <item>Remove Gopher Protocol Support
55 <item>Remove Outdated Tools
56 </itemize>
57
58 <p>Most user-facing changes are reflected in squid.conf (see below).
59
60 <sect1>TLS ServerHello
61 <p>Squid is now more lenient towards misconfigured <em>tls-cert=</em> file
62 contents. Squid will attempt to sort the CA chain and send certificates in
63 the order required by TLS ServerHello.
64
65 <p>Squid no longer sends the <em>tls-clientca=</em> on <em>https_port</em>
66 server handshakes. This fix breaks misconfigured Squid deployments that
67 (usually unknowingly) rely on the OpenSSL clientca 'leak' to build a
68 complete https_port server certificate chain sent to TLS clients. Such
69 deployments should add the right intermediate CA certificate(s) to their
70 <em>tls-cert=</em> bundle (or equivalent).
71
72 <sect1>Log TLS Communication Secrets
73 <p>Squid now records pre-master secret and related encryption details for TLS
74 connections accepted or established by Squid. These connections include
75 connections accepted at <em>https_port</em>, TLS connections opened to
76 origin servers/<em>cache_peer</em>/ICAP services, and TLS tunnels bumped by
77 Squid using the SslBump feature.
78
79 <p>Logging of these details are controlled by the <em>tls_key_log</em>. See
80 <url url="http://www.squid-cache.org/Doc/config/tls_key_log/" name="squid.conf documentation">
81 for details.
82
83 <sect1>Ban ACL key changes in ACLs
84 <p>More info in the <url url="https://github.com/squid-cache/squid/commit/4a3b85322ce5a464175eb49ddb5be413794b25b8" name="commit description">.
85
86 <p>Certain Squid ACLs can check the value of a specific key=value where
87 the key name is configurable. These ACLs are unable to check multiple
88 different key names.
89
90 <p>Squid did write a cache.log ERROR for req_header/rep_header key changes
91 but was silent about the preceding <em>note</em> ACL rules being
92 ineffective after a key name change.
93
94 <p>Squid will now actively reject all such configurations.
95
96 <sect1>Block to-local Traffic
97 <p>More info in the policy change <url url="https://github.com/squid-cache/squid/commit/f13e556e4ce743369dee4782b78c87d65580ab00" name="commit">
98 and the ACL creation <url url="https://github.com/squid-cache/squid/commit/6d2f8ed096bf5c013b8560451e41d8772c64ba66" name="commit">.
99
100 <p>This Squid introduces the <em>to_linklocal</em> ACL as pre-defined to
101 match requests from 169.254.0.0/16 and fe80::/10.
102
103 <p>The default configuration settings are changed to:
104 <verb>
105 http_access allow localhost
106 http_access deny to_localhost
107 http_access deny to_linklocal
108 # http_access allow localnet
109 </verb>
110
111 <p>These changes only affect the default squid.conf and new installs.
112 Upgraded installations will continue to use their previous settings.
113
114 <sect1>RFC 9211: HTTP Cache-Status support
115 <p>See also <url url="https://www.rfc-editor.org/rfc/rfc9211" name="RFC 9211">.
116
117 <p>This HTTP header replaces <em>X-Cache</em> and <em>X-Cache-Lookup</em>
118 which are no longer emitted by Squid. Any tools or management systems
119 relying on those <em>X-</em> headers need to be upgraded to work with
120 the new standardized header.
121
122 <sect1>RFC 9111: Stop treating Warning specially
123 <p>RFC 9111 obsoletes the Warning header, removing all specification
124 requirements about it.
125
126 <p>This Squid changes behaviour in regards to that header:
127 <itemize>
128 <item>1) Squid no longer adds Warning headers to generated or forwarded
129 messages. Miss responses from servers/peers and hits cached by an
130 older version of Squid may still have Warning headers.
131
132 <item>2) On 304 revalidation, Warning header are treated the same as any
133 other/generic header. They are added or replaced according to their
134 presence in the 304 reply. Absent any Warning update by a 304, Squid
135 may still deliver cached content with old Warning headers.
136
137 <item>3) Squid no longer validates received Warning headers. RFC 7234 placed
138 syntax requirements and limits on how old some Warning values could
139 be (when dated). Those checks are no longer being performed. The
140 header value is now treated as an opaque string.
141
142 <item>4) Warning header usage and types are no longer tracked in message
143 statistics available through cache manager.
144 </itemize>
145
146 <sect1>ext_kerberos_ldap_group_acl: Support -b with -D
147 <p>Previous versions of this helper ignore the <em>-b</em> option when
148 the <em>-D</em> option is used.
149
150 <p>Fixing this limitation adds support for FreeIPA and limited subtree
151 searching.
152
153 <sect1>Remove Gopher Protocol Support
154 <p>With this change, Gopher requests will be handled like any other request
155 with an unknown (to Squid) protocol. For example, HTTP requests with
156 <em>gopher://</em> URL scheme result in ERR_UNSUP_REQ.
157
158 <p>Default Squid configuration still considers TCP port 70 safe. The
159 corresponding Safe_ports ACL rule has not been removed.
160
161 <sect1>Removed Outdated Tools
162 <p>We do not have enough resources/demand for maintaining these tools, they
163 do require maintenance, and there are better tools available.
164
165 <itemize>
166 <item><em>cache_diff</em> which has no users according to community
167 poll results in 2020.
168
169 <item><em>GnuRegex</em> library implementation. Modern operating
170 systems provide a functioning regex library, so we do not need to
171 carry one anymore.
172
173 <item><em>membanger</em> which has not built for many years.
174
175 <item><em>pconn-banger</em> lacked build rules since inception (1997)
176 and probably could not be built manually since at least 2007.
177
178 <item><em>recv-announce</em> which has not built for many years.
179
180 <item><em>send-announce</em> which is very much outdated and unused
181 since the decline of the <url url="http://ircache.nlanr.net/" name="NLANR IRCache"> service.
182
183 <item><em>tcp-banger2</em> is not built by default and probably could
184 not be built at all since at least 2006.
185
186 <item><em>tcp-banger3</em> lacked build rules since inception (1998)
187 and probably could not be built manually (by mimicking tcp-banger2
188 build commands) without warnings since 2002.
189
190 <item><em>tcp-banger.pl</em> has portability and code quality issues;
191 its basic functionality is supported by squidclient, wget, curl, and
192 others.
193
194 <item<em>ufsdump</em> was not built by default since 2010 and its build
195 has been failing since before 2017.
196 </itemize>
197
198
199 <sect>Changes to squid.conf since Squid-5
200 <p>
201 This section gives an account of those changes in three categories:
202
203 <itemize>
204 <item><ref id="newdirectives" name="New directives">
205 <item><ref id="modifieddirectives" name="Changes to existing directives">
206 <item><ref id="removeddirectives" name="Removed directives">
207 </itemize>
208 <p>
209
210 <sect1>New directives<label id="newdirectives">
211 <p>
212 <descrip>
213 <tag>paranoid_hit_validation</tag>
214 <p>Controls whether to perform extra internal checks when loading
215 entries from the on-disk cache.
216
217 <tag>cache_log_message</tag>
218 <p>Configure logging options on a per-message basis, overriding the
219 per-section options. Message IDs are guaranteed stable across builds and
220 releases. Only a few messages support this for now.
221 </descrip>
222
223 <sect1>Changes to existing directives<label id="modifieddirectives">
224 <p>
225 <descrip>
226 <tag>time units</tag>
227 <p>All directives accepting time values now accept a time unit suffix
228 from nanosecond to decade.
229
230 <tag>sslcrtvalidator_program</tag>
231 <p>New <em>ttl=infinity</em> option to disable TTL expiry on stored helper responses.
232
233 <tag>logformat</tag>
234 <p>New <em>transport::&gt;connection_id</em> code to display which transport-level
235 connection the request was received.
236 <p>New <em>busy_time</em> code to display the cumulative CPU time spent processing
237 the request, excluding the time spent waiting for external resources.
238 WARNING: this time is approximate and is known to have bugs and gaps,
239 so consider it a lower bound.
240 <p>New <em>request_attempts</em> code to display how many forwarding attempts were
241 made for this request.
242 <p>Squid now adds <em>ABORTED</em> to values printed by the <em>Ss</e> code in more
243 cases where a TCP Squid-to-server connection was closed prematurely.
244
245 <tag>server_cert_fingerprint</tag>
246 <p>Removed the broken <em>-sha</em> option. <em>SHA1</em> remains the default and
247 only supported fingerprinting algorithm. Configuring it is unnecessary.
248 </descrip>
249
250 <sect1>Removed directives<label id="removeddirectives">
251 <p>
252 <descrip>
253 <tag>announce_file</tag>
254 <p>Obsolete. Squid no longer provides functionality to enroll in the
255 cache registration service.
256
257 <tag>announce_host</tag>
258 <p>Obsolete. Squid no longer provides functionality to enroll in the
259 cache registration service.
260
261 <tag>announce_period</tag>
262 <p>Obsolete. Squid no longer provides functionality to enroll in the
263 cache registration service.
264
265 <tag>announce_port</tag>
266 <p>Obsolete. Squid no longer provides functionality to enroll in the
267 cache registration service.
268
269 <tag>request_entities</tag>
270 <p>Obsolete. Squid accepts an entity (aka payload, body) on
271 HTTP/1.1 GET or HEAD requests when a Content-Length or
272 Transfer-Encoding header is presented to clearly determine size.
273 <p>To retain the old behaviour of rejecting GET/HEAD payloads
274 for HTTP/1.1 use <em>http_access</em> rules:
275 <verb>
276 acl fetch method GET HEAD
277 acl entity req_header Content-Length .
278 http_access deny fetch entity
279 </verb>
280 <p>Squid will reject use of Content-Length header on HTTP/1.0
281 messages with GET, HEAD, DELETE, LINK, UNLINK methods. Since
282 the HTTP/1.0 specification defines those as not having entities.
283 To deliver entities on these methods the chunked encoding
284 feature defined by HTTP/1.1 must be used, or the request
285 upgraded to an HTTP/1.1 message.
286 </descrip>
287
288
289 <sect>Changes to ./configure options since Squid-5
290 <p>
291 This section gives an account of those changes in three categories:
292
293 <itemize>
294 <item><ref id="newoptions" name="New options">
295 <item><ref id="modifiedoptions" name="Changes to existing options">
296 <item><ref id="removedoptions" name="Removed options">
297 </itemize>
298
299 <sect1>New options<label id="newoptions">
300 <p>
301 <descrip>
302 <tag>--with-cap</tag>
303 <p>Replacement for <em>--with-libcap</em>.
304
305 <tag>--with-xml2</tag>
306 <p>Replacement for <em>--with-libxml2</em>.
307
308 <tag>--with-ldap</tag>
309 <p>Compile with OpenLDAP, Mozilla LDAP, or Windows LDAP support.
310 <p>LDAP support is enabled by default. Use <em>--without-ldap</em> to disable.
311
312 </descrip>
313
314 <sect1>Changes to existing options<label id="modifiedoptions">
315 <p>
316 <descrip>
317 <p>There are no ./configure options changed.
318
319 </descrip>
320 </p>
321
322 <sect1>Removed options<label id="removedoptions">
323 <p>
324 <descrip>
325 <tag>--enable-cpu-profiling</tag>
326 <p>This feature has been unreliable for many years. Other tools such as
327 oprofile provide better tracking and should be used instead.
328
329 <tag>--enable-debug-cbdata</tag>
330 <p>This feature has been of limited use since AsyncCalls feature
331 took over much of the CBDATA functionality.
332
333 <tag>--enable-gnuregex</tag>
334 <p>Squid no longer ships with a built-in GnuRegex implementation.
335
336 <tag>--enable-kill-parent-hack</tag>
337 <p>This feature has been deprecated for years. Other features such as
338 <em>--foreground</em> command line argument should be used instead.
339
340 <tag>--enable-leakfinder</tag>
341 <p>Removed. Using Valgrind for leak detection is still supported.
342
343 <tag>--disable-loadable-modules</tag>
344 <p>This option was performing the same duties as <em>--disable-shared</em>.
345
346 <tag>--with-libcap</tag>
347 <p>Replaced by <em>--with-cap</em>.
348
349 <tag>--with-libxml2</tag>
350 <p>Replaced by <em>--with-xml2</em>.
351
352 </descrip>
353
354
355 <sect>Regressions since Squid-2.7
356
357 <p>Some squid.conf options which were available in Squid-2.7 are not yet available in Squid-6.
358
359 <p>If you need something to do then porting one of these from Squid-2 is most welcome.
360
361 <sect1>Missing squid.conf options available in Squid-2.7
362 <p>
363 <descrip>
364 <tag>broken_vary_encoding</tag>
365 <p>Not yet ported from 2.6
366
367 <tag>cache_peer</tag>
368 <p><em>monitorinterval=</em> not yet ported from 2.6
369 <p><em>monitorsize=</em> not yet ported from 2.6
370 <p><em>monitortimeout=</em> not yet ported from 2.6
371 <p><em>monitorurl=</em> not yet ported from 2.6
372
373 <tag>cache_vary</tag>
374 <p>Not yet ported from 2.6
375
376 <tag>error_map</tag>
377 <p>Not yet ported from 2.6
378
379 <tag>external_refresh_check</tag>
380 <p>Not yet ported from 2.7
381
382 <tag>location_rewrite_access</tag>
383 <p>Not yet ported from 2.6
384
385 <tag>location_rewrite_children</tag>
386 <p>Not yet ported from 2.6
387
388 <tag>location_rewrite_concurrency</tag>
389 <p>Not yet ported from 2.6
390
391 <tag>location_rewrite_program</tag>
392 <p>Not yet ported from 2.6
393
394 <tag>refresh_pattern</tag>
395 <p><em>stale-while-revalidate=</em> not yet ported from 2.7
396 <p><em>ignore-stale-while-revalidate=</em> not yet ported from 2.7
397 <p><em>negative-ttl=</em> not yet ported from 2.7
398
399 <tag>refresh_stale_hit</tag>
400 <p>Not yet ported from 2.7
401
402 <tag>update_headers</tag>
403 <p>Not yet ported from 2.7
404
405 </descrip>
406
407
408 <sect>Copyright
409 <p>
410 Copyright (C) 1996-2023 The Squid Software Foundation and contributors
411 <p>
412 Squid software is distributed under GPLv2+ license and includes
413 contributions from numerous individuals and organizations.
414 Please see the COPYING and CONTRIBUTORS files for details.
415
416 </article>