]> git.ipfire.org Git - thirdparty/squid.git/blob - doc/release-notes/release-4.sgml
4.0.16
[thirdparty/squid.git] / doc / release-notes / release-4.sgml
1 <!doctype linuxdoc system>
2 <article>
3 <title>Squid 4.0.16 release notes</title>
4 <author>Squid Developers</author>
5
6 <abstract>
7 This document contains the release notes for version 4 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 <sect>Notice
15 <p>The Squid Team are pleased to announce the release of Squid-4.0.16 for testing.
16
17 This new release is available for download from <url url="http://www.squid-cache.org/Versions/v4/"> or the
18 <url url="http://www.squid-cache.org/Download/http-mirrors.html" name="mirrors">.
19
20 <p>While this release is not deemed ready for production use, we believe it is ready for wider testing by the community.
21
22 <p>We welcome feedback and bug reports. If you find a bug, please see <url url="http://wiki.squid-cache.org/SquidFaq/BugReporting">
23 for how to submit a report with a stack trace.
24
25 <sect1>Known issues
26 <p>Although this release is deemed good enough for use in many setups, please note the existence of
27 <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=4" name="open bugs against Squid-4">.
28
29 <p>This release adds a dependency on C++11 support in any compiler used to build Squid.
30 As a result older C++03 -only and most C++0x compilers will no longer build successfully.
31 GCC 4.9+ and Clang 3.5+ are known to have working C++11 support and are usable.
32 GCC-4.8 will also build for now despite lack of full C++11 support, but some future features may not be available.
33
34 <sect1>Changes since earlier releases of Squid-4
35 <p>
36 The Squid-4 change history can be <url url="http://www.squid-cache.org/Versions/v4/changesets/" name="viewed here">.
37
38
39 <sect>Major new features since Squid-3.5
40 <p>Squid 4 represents a new feature release above 3.5.
41
42 <p>The most important of these new features are:
43 <itemize>
44 <item>Configurable helper queue size
45 <item>Helper concurrency channels changes
46 <item>SSL support removal
47 <item>Helper Binary Changes
48 <item>Secure ICAP
49 <item>Improved SMP support
50 <item>Improved process management
51 </itemize>
52
53 Most user-facing changes are reflected in squid.conf (see below).
54
55
56 <sect1>Configurable helper queue size
57 <p>The new queue-size=N option to helpers configuration, allows users
58 to configure the maximum number of queued requests to busy helpers.
59
60 <sect1>Helper concurrency channels changes
61 <p>helper-mux.pl we have been distributing for the past few years to
62 encourage use of concurrency is no longer compatible with Squid. If
63 used it will spawn up to 2^64 helpers and DoS the Squid server.
64
65 <p>Helpers utilizing arrays to handle fixed amounts of concurrency
66 channels MUST be re-written to use queues and capable of handling a
67 64-bit int as index or they will be vulnerable to buffer overrun and
68 arbitrary memory accesses.
69
70 <p>32-bit helpers need re-writing to handle the concurrency channel ID
71 as a 64-bit integer value. If not updated they will cause proxies to
72 return unexpected results or timeout once crossing the 32-bit wrap
73 boundary. Leading to undefined behaviour in the client HTTP traffic.
74
75
76 <sect1>SSL support removal
77 <p>Details in <url url="https://tools.ietf.org/html/rfc6176" name="RFC 6176">
78 and <url url="https://tools.ietf.org/html/rfc7568" name="RFC 7568">
79
80 <p>SSLv2 is not fit for purpose. Squid no longer supports being configured with
81 any settings regarding this protocol. That includes settings manually disabling
82 its use since it is now forced to disable by default. Also settings enabling
83 various client/server workarounds specific to SSLv2 are removed.
84
85 <p>SSLv3 is not fit for purpose. Squid still accepts configuration, but use
86 is deprecated and will be removed entirely in a future version.
87 Squid default behavour is to follow the TLS built in negotiation mechanism
88 which prefers the latest TLS version. But also to accept downgrades to SSLv3.
89 Use <em>tls-options=NO_SSLv3</em> to disable SSLv3 support completely.
90
91 <p>A new option <em>tls-min-version=1.N</em> is added in place of <em>sslversion=</em>
92 to configure the minimum version the TLS negotiation will allow to be used
93 when an old TLS version is requested by the remote endpoint.
94
95 <p>The system Trusted CAs are no longer used by default when verifying client
96 certificates. The <em>cafile=</em> option should be used instead to load
97 the specific CA which signed acceptible client certificates explicitly,
98 even if that CA is one of the system Trusted CAs.
99 The <em>tls-default-ca</em> option can be used to restore the old
100 behaviour explicitly if needed.
101
102
103 <sect1>Helper Binary Changes
104 <p>The <em>basic_msnt_multi_domain_auth</em> helper has been removed. The
105 <em>basic_smb_lm_auth</em> helper performs the same actions without extra
106 Perl and Samba dependencies.
107
108 <p>The <em>cert_valid.pl</em> testing helper has been renamed to
109 <em>security_fake_certverify</em>, reflecting the Squid helper naming schema
110 and that it does not actually perform any certificate checks.
111
112 <p>The <em>security_fake_certverify</em> helper is also now built and installed
113 by default. It is written in Perl so does not require OpenSSL dependencies
114 for installation. But does use the Perl Crypt::OpenSSL::X509 module for execution.
115 Building the helper can be controlled using the <em>--enable-security-cert-validators="fake"</em>
116 option.
117
118 <p>The <em>ssl_crtd</em> helper has been renamed to <em>security_file_certgen</em>
119 and is now built and installed by default whenever OpenSSL support is enabled.
120 Building the helper can be controlled using the <em>--enable-security-cert-generators="file"</em>
121 option.
122 NOTE: The <em>--enable-ssl-crtd</em> option is still required to enable the
123 <em>sslcrtd_program</em> helper interface within Squid that uses the helper.
124
125 <p>The <em>ntlm_smb_lm_auth</em> helper is now built using <em>--enable-auth-ntlm="SMB_LM"</em>.
126 Notice the upper case where it was previously a (wrongly) lower cased acronym.
127
128
129 <sect1>Secure ICAP
130 <p>ICAP services can now be used over TLS connections.
131
132 <p>To mark an ICAP service as secure, use an <em>icaps://</em> service URI scheme when
133 listing your service via an icap_service directive. The industry is using a
134 <em>Secure ICAP</em> term, and Squid follows that convention, but <em>icaps</em> seems more
135 appropriate for a <em>scheme</em> name.
136
137 <p>Squid uses <em>port 11344</em> for Secure ICAP by default, following another popular
138 proxy convention. The old 1344 default for plain ICAP ports has not changed.
139
140
141 <sect1>Improved SMP support
142 <p>Use of C++11 atomic operations instead of GNU atomics allows a wider range of
143 operating systems and compilers to build Squid SMP and multi-process features.
144 However this does require a C++11 or C++0x compiler with a recent version of
145 the C++ standard library.
146
147 <p>IpcIo and Mmapped disk I/O modules are now auto-detected properly which
148 enables Rock storage on more systems by default than previously.
149
150
151 <sect1>Improved process management
152 <p>Squid is traditionally refered to as a daemon. But is actually a combination
153 of daemon and daemon manager processes. This has caused significant problems
154 integrating it with other third-party daemon managers.
155
156 <p>The Squid process which places its PID into the squid.pid file has always
157 been the process to which control signals are sent. The manager process is
158 now taking on signal handling instead of the main daemon process. Enabling
159 integration with daemon managers such as Upstart or systemd which assume the
160 process they initiated is the daemon with a PID to control.
161
162 <p>The squid binary now has a new <em>--foreground</em> command line option
163 which prevents the process from exiting early while background workers
164 continue their processing. When run with this option Squid will now wait
165 for the worker(s) to finish before exiting. Unlike the old <em>-N</em> option
166 <em>--foreground</em> supports SMP workers and multi-process features.
167 <em>--foreground</em> is particularly useful for use with <em>-z</em> (disk
168 cache structures creation), as it allows the caller to wait until Squid has
169 finished.
170
171
172 <sect>Changes to squid.conf since Squid-3.5
173 <p>
174 There have been changes to Squid's configuration file since Squid-3.5.
175
176 This section gives a thorough account of those changes in three categories:
177
178 <itemize>
179 <item><ref id="newtags" name="New tags">
180 <item><ref id="modifiedtags" name="Changes to existing tags">
181 <item><ref id="removedtags" name="Removed tags">
182 </itemize>
183 <p>
184
185 <sect1>New tags<label id="newtags">
186 <p>
187 <descrip>
188 <tag>collapsed_forwarding_shared_entries_limit</tag>
189 <p>New directive to limit the size of a table used for sharing information
190 about collapsible entries among SMP workers.
191
192 <tag>on_unsupported_protocol</tag>
193 <p>New directive to set the action performed when encountering strange
194 protocol requests at the beginning of an accepted TCP connection.
195
196 <tag>reply_header_add</tag>
197 <p>New directive to add header fields to outgoing HTTP responses to
198 the client.
199
200 <tag>request_start_timeout</tag>
201 <p>New directive controlling how long Squid waits for the first request
202 bytes to arrive after initial connection establishment by a client.
203
204 <tag>server_pconn_for_nonretriable</tag>
205 <p>New directive to provide fine-grained control over persistent connection
206 reuse when forwarding HTTP requests that Squid cannot retry. It is useful
207 in environments where opening new connections is very expensive
208 and race conditions associated with persistent connections are very rare
209 and/or only cause minor problems.
210
211 <tag>shared_memory_locking</tag>
212 <p>New directive to ensure shared memory is all available immediately
213 on startup. Protects against SIGBUS errors, but delays startup.
214
215 <tag>tls_outgoing_options</tag>
216 <p>New directive to define TLS security context options for outgoing
217 connections. For example to HTTPS servers.
218
219 <tag>url_rewrite_timeout</tag>
220 <p>Squid times active requests to redirector. This option sets
221 the timeout value and the Squid reaction to a timed out
222 request.
223
224 </descrip>
225
226 <sect1>Changes to existing tags<label id="modifiedtags">
227 <p>
228 <descrip>
229 <tag>access_log</tag>
230 <p>TCP accept(2) errors logged with URI <em>error:accept-client-connection</em>.
231 <p>Unused connections received in <em>http_port</em> or <em>https_port</em>
232 or transactions terminated before reading[parsing] request headers
233 logged with URI <em>error:transaction-end-before-headers</em>.
234
235 <tag>acl</tag>
236 <p>New <em>-m</em> flag for <em>note</em> ACL to match substrings.
237 <p>New <em>connections_encrypted</em> type for matching transactions
238 where all HTTP messages were received over TLS transport connections,
239 including messages received from ICAP servers.
240
241 <tag>auth_param</tag>
242 <p>New parameter <em>queue-size=</em> to set the maximum number
243 of queued requests.
244 <p>New parameter <em>on-persistent-overload=</em> to set the action taken
245 when the helper queue is overloaded.
246
247 <tag>cache_peer</tag>
248 <p>New option <em>auth-no-keytab</em> to let GSSAPI implementation determine
249 which Kerberos credentials to use, instead of specifying a keytab.
250 <p>Replaced option <em>ssl</em> with <em>tls</em>. Use of any
251 <em>tls-</em> prefixed options implies <em>tls</em> is enabled.
252 <p>New option <em>tls-min-version=1.N</em> to set minimum TLS version allowed.
253 <p>New option <em>tls-default-ca</em> replaces <em>sslflags=NO_DEFAULT_CA</em>
254 <p>New option <em>tls-no-npn</em> to disable sending TLS NPN extension.
255 <p>All <em>ssloptions=</em> values for SSLv2 configuration or disabling
256 have been removed.
257 <p>Removed <em>sslversion=</em> option. Use <em>tls-options=</em> instead.
258 <p>Manual squid.conf update may be required on upgrade.
259 <p>Replaced option <em>sslcafile=</em> with <em>tls-cafile=</em>
260 which takes multiple entries.
261
262 <tag>external_acl_type</tag>
263 <p>New parameter <em>queue-size=</em> to set the maximum number
264 of queued requests.
265 <p>New parameter <em>on-persistent-overload=</em> to set the action taken
266 when the helper queue is overloaded.
267 <p>Format field updated to accept any logformat %macro code.
268
269 <tag>http_port</tag>
270 <p>New option <em>tls-min-version=1.N</em> to set minimum TLS version allowed.
271 <p>New option <em>tls-default-ca</em> replaces <em>sslflags=NO_DEFAULT_CA</em>,
272 the default is also changed to OFF.
273 <p>New option <em>tls-no-npn</em> to disable sending TLS NPN extension.
274 <p>All <em>option=</em> values for SSLv2 configuration or disabling
275 have been removed.
276 <p>Removed <em>version=</em> option. Use <em>tls-options=</em> instead.
277 <p>Manual squid.conf update may be required on upgrade.
278 <p>Replaced <em>cafile=</em> with <em>tls-cafile=</em> which takes multiple entries.
279
280 <tag>https_port</tag>
281 <p>New option <em>tls-min-version=1.N</em> to set minimum TLS version allowed.
282 <p>New option <em>tls-default-ca</em> replaces <em>sslflags=NO_DEFAULT_CA</em>,
283 the default is also changed to OFF.
284 <p>New option <em>tls-no-npn</em> to disable sending TLS NPN extension.
285 <p>All <em>options=</em> values for SSLv2
286 configuration or disabling have been removed.
287 <p>Removed <em>version=</em> option. Use <em>tls-options=</em> instead.
288 <p>Manual squid.conf update may be required on upgrade.
289 <p>Replaced <em>cafile=</em> with <em>tls-cafile=</em> which takes multiple entries.
290
291 <tag>icap_service</tag>
292 <p>New scheme <em>icaps://</em> to enable TLS/SSL connections to Secure ICAP
293 servers on port 11344.
294 <p>New <em>tls-cert=</em> option to set TLS client certificate to use.
295 <p>New <em>tls-key=</em> option to set TLS private key matching the client
296 certificate used.
297 <p>New <em>tls-min-version=1.N</em> option to set minimum TLS version allowed
298 on server connections.
299 <p>New <em>tls-options=</em> option to set OpenSSL library parameters.
300 <p>New <em>tls-flags=</em> option to set flags modifying Squid TLS operations.
301 <p>New <em>tls-cipher=</em> option to set a list of ciphers permitted.
302 <p>New <em>tls-cafile=</em> option to set a file with additional CA
303 certificate(s) to verify the server certificate.
304 <p>New <em>tls-crlfile=</em> option to set a file with a CRL to verify the
305 server certificate.
306 <p>New <em>tls-default-ca</em> option to use the system Trusted CAs to
307 verify the server certificate.
308 <p>New <em>tls-domain=</em> option to verify the server certificate domain.
309
310 <tag>logformat</tag>
311 <p>New code <em>%ssl::&lt;cert_errors</em> to display server
312 certificate errors.
313 <p>New code <em>%ssl::&gt;negotiated_version</em> to display
314 negotiated TLS version of the client connection.
315 <p>New code <em>%ssl::&lt;negotiated_version</em> to display
316 negotiated TLS version of the last server or peer connection.
317 <p>New code <em>%ssl::&gt;received_hello_version</em> to display the
318 TLS version of the Hello message received from TLS client.
319 <p>New code <em>%ssl::&lt;received_hello_version</em> to display the
320 TLS version of the Hello message received from TLS server.
321 <p>New code <em>%ssl::&gt;received_supported_version</em> to display
322 the maximum TLS version supported by the TLS client.
323 <p>New code <em>%ssl::&lt;received_supported_version</em> to display
324 the maximum TLS version supported by the TLS server.
325 <p>New code <em>%ssl::&gt;negotiated_cipher</em> to display the
326 negotiated cipher of the client connection.
327 <p>New code <em>%ssl::&lt;negotiated_cipher</em> to display the
328 negotiated cipher of the last server or peer connection.
329
330 <tag>pid_filename</tag>
331 <p>Default value now based on squid -n command line parameter.
332
333 <tag>refresh_pattern</tag>
334 <p>Removed option <em>ignore-auth</em>. Its commonly desired behaviour
335 is performed by default with correct HTTP/1.1 revalidation.
336 <p>Removed <em>ignore-must-revalidate</em>. Other more HTTP compliant
337 directives (cache, store_miss) can be used to prevent objects from
338 caching.
339
340 <tag>sslcrtd_children</tag>
341 <p>New parameter <em>queue-size=</em> to set the maximum number
342 of queued requests.
343 <p>New parameter <em>on-persistent-overload=</em> to set the action taken
344 when the helper queue is overloaded.
345
346 <tag>sslcrtvalidator_children</tag>
347 <p>New parameter <em>queue-size=</em> to set the maximum number
348 of queued requests.
349 <p>New parameter <em>on-persistent-overload=</em> to set the action taken
350 when the helper queue is overloaded.
351
352 <tag>store_id_children</tag>
353 <p>New parameter <em>queue-size=</em> to set the maximum number
354 of queued requests.
355 <p>New parameter <em>on-persistent-overload=</em> to set the action taken
356 when the helper queue is overloaded.
357
358 <tag>url_rewrite_children</tag>
359 <p>New parameter <em>queue-size=</em> to set the maximum number
360 of queued requests.
361 <p>New parameter <em>on-persistent-overload=</em> to set the action taken
362 when the helper queue is overloaded.
363
364 </descrip>
365
366 <sect1>Removed tags<label id="removedtags">
367 <p>
368 <descrip>
369 <tag>cache_peer_domain</tag>
370 <p>Superceded by <em>cache_peer_access</em>. Use dstdomain ACL
371 in the access control list to restrict domains requested.
372
373 <tag>ie_refresh</tag>
374 <p>Removed. MSIE 3.x, 4.x, 5.0 and 5.01 are no longer popular browsers.
375
376 <tag>sslproxy_cafile</tag>
377 <p>Replaced by <em>tls_outgoing_options cafile=</em>.
378 Which now takes multiple entries.
379
380 <tag>sslproxy_capath</tag>
381 <p>Replaced by <em>tls_outgoing_options capath=</em>.
382
383 <tag>sslproxy_cipher</tag>
384 <p>Replaced by <em>tls_outgoing_options cipher=</em>.
385
386 <tag>sslproxy_client_certificate</tag>
387 <p>Replaced by <em>tls_outgoing_options cert=</em>.
388
389 <tag>sslproxy_client_key</tag>
390 <p>Replaced by <em>tls_outgoing_options key=</em>.
391
392 <tag>sslproxy_flags</tag>
393 <p>Replaced by <em>tls_outgoing_options flags=</em>.
394
395 <tag>sslproxy_options</tag>
396 <p>Replaced by <em>tls_outgoing_options options=</em>.
397 <p>All values for SSLv2 configuration or disabling have been removed.
398 <p>Manual squid.conf update may be required on upgrade.
399
400 <tag>sslproxy_version</tag>
401 <p>Replaced by <em>tls_outgoing_options options=</em>.
402 <p>All values for SSLv2 configuration or disabling have been removed.
403 <p>Manual squid.conf update may be required on upgrade.
404
405 </descrip>
406
407
408 <sect>Changes to ./configure options since Squid-3.5
409 <p>
410 There have been some changes to Squid's build configuration since Squid-3.5.
411
412 This section gives an account of those changes in three categories:
413
414 <itemize>
415 <item><ref id="newoptions" name="New options">
416 <item><ref id="modifiedoptions" name="Changes to existing options">
417 <item><ref id="removedoptions" name="Removed options">
418 </itemize>
419
420
421 <sect1>New options<label id="newoptions">
422 <p>
423 <descrip>
424 <tag>--enable-security-cert-generators</tag>
425 <p>New option to control which TLS/SSL dynamic certificate generator
426 helpers are built and installed.
427 <p>Helper <em>ssl_crtd</em> has been renamed to <em>security_file_certgen</em>
428 and built with module name <em>file</em>. Requires <em>--with-openssl</em>.
429
430 <tag>--enable-security-cert-validators</tag>
431 <p>New option to control which TLS/SSL certificate validation
432 helpers are built and installed.
433 <p>One <em>fake</em> helper that does not actually perform any
434 certificate checks is provided for testing and as an example
435 for writing custom helpers.
436
437 <tag>--without-cppunit</tag>
438 <p>The cppunit testing framework is auto-detected and used when available.
439 This option can be used to disable it explicitly.
440
441 </descrip>
442
443 <sect1>Changes to existing options<label id="modifiedoptions">
444 <p>
445 <descrip>
446 <tag>--enable-auth-basic</tag>
447 <p>The <em>MSNT-multi-domain</em> helper has been removed.
448 <p>The SMB LanMan helper <em>SMB_LM</em> is no longer built by default.
449 It needs to be explicitly listed to be built.
450
451 <tag>--enable-auth-ntlm</tag>
452 <p>The SMB LanMan helper is now built using <em>SMB_LM</em>
453 (was lower case <em>smb_lm</em>).
454 <p>The SMB LanMan helper <em>SMB_LM</em> is no longer built by default.
455 It needs to be explicitly listed to be built.
456
457 <tag>--enable-diskio</tag>
458 <p>Auto-detection of SMP related modules has been fixed to
459 actually auto-detect them without configuring the module
460 list manually.
461
462 </descrip>
463 </p>
464
465 <sect1>Removed options<label id="removedoptions">
466 <p>
467 <descrip>
468 <tag>--with-cppunit-basedir</tag>
469 <p>Replaced by <em>--with-cppunit=PATH</em>.
470 Please prefer the default auto-detection though.
471
472 <tag>XSTD_USE_LIBLTDL</tag>
473 <p>Removed. Use <em>--with-included-ltdl</em> instead.
474 </descrip>
475
476
477 <sect>Regressions since Squid-2.7
478
479 <p>Some squid.conf options which were available in Squid-2.7 are not yet available in Squid-4
480
481 <p>If you need something to do then porting one of these from Squid-2 to Squid-3 is most welcome.
482
483 <sect1>Missing squid.conf options available in Squid-2.7
484 <p>
485 <descrip>
486 <tag>broken_vary_encoding</tag>
487 <p>Not yet ported from 2.6
488
489 <tag>cache_peer</tag>
490 <p><em>monitorinterval=</em> not yet ported from 2.6
491 <p><em>monitorsize=</em> not yet ported from 2.6
492 <p><em>monitortimeout=</em> not yet ported from 2.6
493 <p><em>monitorurl=</em> not yet ported from 2.6
494
495 <tag>cache_vary</tag>
496 <p>Not yet ported from 2.6
497
498 <tag>error_map</tag>
499 <p>Not yet ported from 2.6
500
501 <tag>external_refresh_check</tag>
502 <p>Not yet ported from 2.7
503
504 <tag>location_rewrite_access</tag>
505 <p>Not yet ported from 2.6
506
507 <tag>location_rewrite_children</tag>
508 <p>Not yet ported from 2.6
509
510 <tag>location_rewrite_concurrency</tag>
511 <p>Not yet ported from 2.6
512
513 <tag>location_rewrite_program</tag>
514 <p>Not yet ported from 2.6
515
516 <tag>refresh_pattern</tag>
517 <p><em>stale-while-revalidate=</em> not yet ported from 2.7
518 <p><em>ignore-stale-while-revalidate=</em> not yet ported from 2.7
519 <p><em>negative-ttl=</em> not yet ported from 2.7
520
521 <tag>refresh_stale_hit</tag>
522 <p>Not yet ported from 2.7
523
524 <tag>update_headers</tag>
525 <p>Not yet ported from 2.7
526
527 </descrip>
528
529 <sect>Copyright
530 <p>
531 Copyright (C) 1996-2016 The Squid Software Foundation and contributors
532 <p>
533 Squid software is distributed under GPLv2+ license and includes
534 contributions from numerous individuals and organizations.
535 Please see the COPYING and CONTRIBUTORS files for details.
536
537 </article>