]> git.ipfire.org Git - thirdparty/squid.git/blame - doc/release-notes/release-4.sgml
Cleanup: separate SBufStats from SBuf.h
[thirdparty/squid.git] / doc / release-notes / release-4.sgml
CommitLineData
4d0832d7
AJ
1<!doctype linuxdoc system>
2<article>
81bf66f8 3<title>Squid 4.0.7 release notes</title>
4d0832d7
AJ
4<author>Squid Developers</author>
5
6<abstract>
183b876f 7This document contains the release notes for version 4 of Squid.
4d0832d7
AJ
8Squid is a WWW Cache application developed by the National Laboratory
9for Applied Network Research and members of the Web Caching community.
10</abstract>
11
12<toc>
13
14<sect>Notice
81bf66f8 15<p>The Squid Team are pleased to announce the release of Squid-4.0.7 for testing.
4d0832d7 16
183b876f 17This new release is available for download from <url url="http://www.squid-cache.org/Versions/v4/"> or the
71f0186a 18 <url url="http://www.squid-cache.org/Download/http-mirrors.html" name="mirrors">.
4d0832d7
AJ
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
4dd2c9d6 26<p>Although this release is deemed good enough for use in many setups, please note the existence of
183b876f 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">.
4d0832d7 28
1377f2b1 29<p>This release adds a dependency on C++11 support in any compiler used to build Squid.
4dd2c9d6 30 As a result older C++03 -only and most C++0x compilers will no longer build successfully.
a9d17dfc 31 GCC 4.9+ and Clang 3.5+ are known to have working C++11 support and are usable.
4dd2c9d6
AJ
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
183b876f 34<sect1>Changes since earlier releases of Squid-4
4d0832d7 35<p>
183b876f 36The Squid-4 change history can be <url url="http://www.squid-cache.org/Versions/v4/changesets/" name="viewed here">.
4d0832d7
AJ
37
38
39<sect>Major new features since Squid-3.5
183b876f 40<p>Squid 4 represents a new feature release above 3.5.
4d0832d7
AJ
41
42<p>The most important of these new features are:
43<itemize>
9a258777 44 <item>Configurable helper queue size
1377f2b1 45 <item>Helper concurrency channels changes
0e5c14da 46 <item>SSL support removal
b817c20f 47 <item>Helper Binary Changes
4dd2c9d6 48 <item>Secure ICAP
4dd2c9d6 49 <item>Improved SMP support
fbcef294 50 <item>Improved process management
4d0832d7
AJ
51</itemize>
52
53Most user-facing changes are reflected in squid.conf (see below).
54
55
6825b101
CT
56<sect1>Configurable helper queue size
57<p>The new queue-size=N option to helpers configuration, allows users
4dd2c9d6 58 to configure the maximum number of queued requests to busy helpers.
4d0832d7 59
32fd6d8a 60<sect1>Helper concurrency channels changes
4dd2c9d6
AJ
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.
32fd6d8a 69
4dd2c9d6
AJ
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.
32fd6d8a 74
9a258777 75
0e5c14da 76<sect1>SSL support removal
9a258777 77<p>Details in <url url="https://tools.ietf.org/html/rfc6176" name="RFC 6176">
0e5c14da 78 and <url url="https://tools.ietf.org/html/rfc7568" name="RFC 7568">
9a258777
AJ
79
80<p>SSLv2 is not fit for purpose. Squid no longer supports being configured with
4dd2c9d6
AJ
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.
9a258777 84
0e5c14da 85<p>SSLv3 is not fit for purpose. Squid still accepts configuration, but use
4dd2c9d6
AJ
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.
0e5c14da 90
4dd2c9d6
AJ
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.
9a258777 94
435c72b0
AJ
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
8f0e29d2 102
b817c20f
AJ
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
e90ce3d1 108<p>The <em>cert_valid.pl</em> testing helper has been renamed to
bbf79f12 109 <em>security_fake_certverify</em>, reflecting the Squid helper naming schema
e90ce3d1
AJ
110 and that it does not actually perform any certificate checks.
111
8732ea9d
AJ
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
cb0b3d63
AJ
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
b817c20f
AJ
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.
4d0832d7
AJ
127
128
4dd2c9d6
AJ
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
68bdae93
AJ
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.
4dd2c9d6
AJ
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
4dd2c9d6
AJ
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
fbcef294
AJ
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 istead of the main daemon process. Enabling
159 integratio with daemon managers such as Upstarrt 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
168
4d0832d7
AJ
169<sect>Changes to squid.conf since Squid-3.5
170<p>
171There have been changes to Squid's configuration file since Squid-3.5.
172
173This section gives a thorough account of those changes in three categories:
174
175<itemize>
176 <item><ref id="newtags" name="New tags">
177 <item><ref id="modifiedtags" name="Changes to existing tags">
178 <item><ref id="removedtags" name="Removed tags">
179</itemize>
180<p>
181
182<sect1>New tags<label id="newtags">
183<p>
184<descrip>
7e62a74f 185 <tag>tls_outgoing_options</tag>
0461fde7 186 <p>New directive to define TLS security context options for outgoing
7e62a74f 187 connections. For example to HTTPS servers.
4d0832d7 188
ff5d59eb
AJ
189 <tag>url_rewrite_timeout</tag>
190 <p>Squid times active requests to redirector. This option sets
191 the timeout value and the Squid reaction to a timed out
192 request.
193
4d0832d7
AJ
194</descrip>
195
196<sect1>Changes to existing tags<label id="modifiedtags">
197<p>
198<descrip>
0461fde7
AJ
199 <tag>acl</tag>
200 <p>New <em>-m</em> flag for <em>note</em> ACL to match substrings.
201
9a258777
AJ
202 <tag>auth_param</tag>
203 <p>New parameter <em>queue-size=</em> to set the maximum number
204 of queued requests.
205
206 <tag>cache_peer</tag>
9825b398
AJ
207 <p>New option <em>auth-no-keytab</em> to let GSSAPI implementation determine
208 which Kerberos credentials to use, instead of specifying a keytab.
1cc44095 209 <p>New option <em>tls-min-version=1.N</em> to set minimum TLS version allowed.
435c72b0 210 <p>New option <em>tls-default-ca</em> replaces <em>sslflags=NO_DEFAULT_CA</em>
b05d749d 211 <p>New option <em>tls-no-npn</em> to disable sending TLS NPN extension.
0e5c14da
AJ
212 <p>All <em>ssloptions=</em> values for SSLv2 configuration or disabling
213 have been removed.
214 <p>Removed <em>sslversion=</em> option. Use <em>tls-options=</em> instead.
9a258777 215 <p>Manual squid.conf update may be required on upgrade.
b0769ee3 216 <p>Replaced <em>sslcafile=</em> with <em>tls-cafile=</em> which takes multiple entries.
9a258777 217
183b876f 218 <tag>external_acl_type</tag>
9a258777
AJ
219 <p>New parameter <em>queue-size=</em> to set the maximum number
220 of queued requests.
1243ec71 221 <p>Format field updated to accept any logformat %macro code.
9a258777
AJ
222
223 <tag>http_port</tag>
0e5c14da 224 <p>New option <em>tls-min-version=1.N</em> to set minimum TLS version allowed.
435c72b0 225 <p>New option <em>tls-default-ca</em> replaces <em>sslflags=NO_DEFAULT_CA</em>
b05d749d 226 <p>New option <em>tls-no-npn</em> to disable sending TLS NPN extension.
0e5c14da
AJ
227 <p>All <em>option=</em> values for SSLv2 configuration or disabling
228 have been removed.
229 <p>Removed <em>version=</em> option. Use <em>tls-options=</em> instead.
9a258777 230 <p>Manual squid.conf update may be required on upgrade.
b0769ee3 231 <p>Replaced <em>cafile=</em> with <em>tls-cafile=</em> which takes multiple entries.
435c72b0
AJ
232 <p>New option <em>tls-default-ca</em> replaces <em>sslflags=NO_DEFAULT_CA</em>,
233 the default is also changed to OFF.
9a258777
AJ
234
235 <tag>https_port</tag>
0e5c14da 236 <p>New option <em>tls-min-version=1.N</em> to set minimum TLS version allowed.
435c72b0
AJ
237 <p>New option <em>tls-default-ca</em> replaces <em>sslflags=NO_DEFAULT_CA</em>,
238 the default is also changed to OFF.
b05d749d 239 <p>New option <em>tls-no-npn</em> to disable sending TLS NPN extension.
1cc44095 240 <p>All <em>options=</em> values for SSLv2
9a258777 241 configuration or disabling have been removed.
0e5c14da 242 <p>Removed <em>version=</em> option. Use <em>tls-options=</em> instead.
9a258777 243 <p>Manual squid.conf update may be required on upgrade.
b0769ee3 244 <p>Replaced <em>cafile=</em> with <em>tls-cafile=</em> which takes multiple entries.
9a258777 245
4dd2c9d6
AJ
246 <tag>icap_service</tag>
247 <p>New scheme <em>icaps://</em> to enable TLS/SSL connections to Secure ICAP
248 servers on port 11344.
249 <p>New <em>tls-cert=</em> option to set TLS client certificate to use.
250 <p>New <em>tls-key=</em> option to set TLS private key matching the client
251 certificate used.
252 <p>New <em>tls-min-version=1.N</em> option to set minimum TLS version allowed
253 on server connections.
254 <p>New <em>tls-options=</em> option to set OpenSSL library parameters.
255 <p>New <em>tls-flags=</em> option to set flags modifying Squid TLS operations.
256 <p>New <em>tls-cipher=</em> option to set a list of ciphers permitted.
257 <p>New <em>tls-cafile=</em> option to set a file with additional CA
258 certificate(s) to verify the server certificate.
259 <p>New <em>tls-crlfile=</em> option to set a file with a CRL to verify the
260 server certificate.
435c72b0
AJ
261 <p>New <em>tls-default-ca</em> option to use the system Trusted CAs to
262 verify the server certificate.
4dd2c9d6
AJ
263 <p>New <em>tls-domain=</em> option to verify the server certificate domain.
264
c28b9a0e 265 <tag>logformat</tag>
0461fde7
AJ
266 <p>New code <em>%ssl::&lt;cert_errors</em> to display server
267 certificate errors.
268 <p>New code <em>%ssl::&gt;negotiated_version</em> to display
269 negotiated TLS version of the client connection.
270 <p>New code <em>%ssl::&lt;negotiated_version</em> to display
271 negotiated TLS version of the last server or peer connection.
272 <p>New code <em>%ssl::&gt;received_hello_version</em> to display the
273 TLS version of the Hello message received from TLS client.
274 <p>New code <em>%ssl::&lt;received_hello_version</em> to display the
275 TLS version of the Hello message received from TLS server.
276 <p>New code <em>%ssl::&gt;received_supported_version</em> to display
277 the maximum TLS version supported by the TLS client.
278 <p>New code <em>%ssl::&lt;received_supported_version</em> to display
279 the maximum TLS version supported by the TLS server.
280 <p>New code <em>%ssl::&gt;negotiated_cipher</em> to display the
281 negotiated cipher of the client connection.
282 <p>New code <em>%ssl::&lt;negotiated_cipher</em> to display the
283 negotiated cipher of the last server or peer connection.
c28b9a0e
AJ
284
285 <tag>pid_filename</tag>
286 <p>Default value now based on squid -n command line parameter.
287
064679ea 288 <tag>refresh_pattern</tag>
1377f2b1
AJ
289 <p>Removed option <em>ignore-auth</em>. Its commonly desired behaviour
290 is performed by default with correct HTTP/1.1 revalidation.
064679ea 291 <p>Removed <em>ignore-must-revalidate</em>. Other more HTTP compliant
1377f2b1
AJ
292 directives (cache, store_miss) can be used to prevent objects from
293 caching.
064679ea 294
9a258777
AJ
295 <tag>sslcrtd_children</tag>
296 <p>New parameter <em>queue-size=</em> to set the maximum number
297 of queued requests.
298
299 <tag>sslcrtvalidator_children</tag>
300 <p>New parameter <em>queue-size=</em> to set the maximum number
301 of queued requests.
6825b101 302
183b876f 303 <tag>url_rewrite_children</tag>
9a258777
AJ
304 <p>New parameter <em>queue-size=</em> to set the maximum number
305 of queued requests.
4d0832d7
AJ
306
307</descrip>
308
309<sect1>Removed tags<label id="removedtags">
310<p>
311<descrip>
f1a5d071
AJ
312 <tag>cache_peer_domain</tag>
313 <p>Superceded by <em>cache_peer_access</em>. Use dstdomain ACL
314 in the access control list to restrict domains requested.
315
7e62a74f
AJ
316 <tag>sslproxy_cafile</tag>
317 <p>Replaced by <em>tls_outgoing_options cafile=</em>.
b0769ee3 318 Which now takes multiple entries.
7e62a74f
AJ
319
320 <tag>sslproxy_capath</tag>
321 <p>Replaced by <em>tls_outgoing_options capath=</em>.
322
323 <tag>sslproxy_cipher</tag>
324 <p>Replaced by <em>tls_outgoing_options cipher=</em>.
325
326 <tag>sslproxy_client_certificate</tag>
327 <p>Replaced by <em>tls_outgoing_options cert=</em>.
328
329 <tag>sslproxy_client_key</tag>
330 <p>Replaced by <em>tls_outgoing_options key=</em>.
331
332 <tag>sslproxy_flags</tag>
333 <p>Replaced by <em>tls_outgoing_options flags=</em>.
334
335 <tag>sslproxy_options</tag>
336 <p>Replaced by <em>tls_outgoing_options options=</em>.
1cc44095
AJ
337 <p>All values for SSLv2 configuration or disabling have been removed.
338 <p>Manual squid.conf update may be required on upgrade.
7e62a74f
AJ
339
340 <tag>sslproxy_version</tag>
1cc44095
AJ
341 <p>Replaced by <em>tls_outgoing_options options=</em>.
342 <p>All values for SSLv2 configuration or disabling have been removed.
343 <p>Manual squid.conf update may be required on upgrade.
4d0832d7
AJ
344
345</descrip>
346
347
348<sect>Changes to ./configure options since Squid-3.5
349<p>
350There have been some changes to Squid's build configuration since Squid-3.5.
351
352This section gives an account of those changes in three categories:
353
354<itemize>
355 <item><ref id="newoptions" name="New options">
356 <item><ref id="modifiedoptions" name="Changes to existing options">
357 <item><ref id="removedoptions" name="Removed options">
358</itemize>
359
360
361<sect1>New options<label id="newoptions">
362<p>
363<descrip>
cb0b3d63
AJ
364 <tag>--enable-security-cert-generators</tag>
365 <p>New option to control which TLS/SSL dynamic certificate generator
366 helpers are built and installed.
367 <p>Helper <em>ssl_crtd<em> has been renamed to <em>security_file_certgen</em>
368 and built with module name <em>file</em>. Requires <em>--with-openssl</em>.
369
8732ea9d 370 <tag>--enable-security-cert-validators</tag>
cb0b3d63 371 <p>New option to control which TLS/SSL certificate validation
40063c71
AJ
372 helpers are built and installed.
373 <p>One <em>fake</em> helper that does not actually perform any
374 certificate checks is provided for testing and as an example
375 for writing custom helpers.
4d0832d7
AJ
376
377</descrip>
378
379<sect1>Changes to existing options<label id="modifiedoptions">
380<p>
381<descrip>
700e2961
AJ
382 <tag>--enable-auth-basic</tag>
383 <p>The <em>MSNT-multi-domain</em> helper has been removed.
4d0832d7 384
b817c20f
AJ
385 <tag>--enable-auth-ntlm</tag>
386 <p>The SMB LanMan helper is now built using <em>SMB_LM</em>
387 (was lower case <em>smb_lm</em>).
388
4dd2c9d6
AJ
389 <tag>--enable-diskio</tag>
390 <p>Auto-detection of SMP related modules has been fixed to
391 actually auto-detect them without configuring the module
392 list manually.
393
4d0832d7
AJ
394</descrip>
395</p>
396
397<sect1>Removed options<label id="removedoptions">
398<p>
399<descrip>
400
401</descrip>
402
403
404<sect>Regressions since Squid-2.7
405
183b876f 406<p>Some squid.conf options which were available in Squid-2.7 are not yet available in Squid-4
4d0832d7
AJ
407
408<p>If you need something to do then porting one of these from Squid-2 to Squid-3 is most welcome.
409
410<sect1>Missing squid.conf options available in Squid-2.7
411<p>
412<descrip>
413 <tag>broken_vary_encoding</tag>
414 <p>Not yet ported from 2.6
415
416 <tag>cache_peer</tag>
417 <p><em>monitorinterval=</em> not yet ported from 2.6
418 <p><em>monitorsize=</em> not yet ported from 2.6
419 <p><em>monitortimeout=</em> not yet ported from 2.6
420 <p><em>monitorurl=</em> not yet ported from 2.6
421
422 <tag>cache_vary</tag>
423 <p>Not yet ported from 2.6
424
425 <tag>error_map</tag>
426 <p>Not yet ported from 2.6
427
428 <tag>external_refresh_check</tag>
429 <p>Not yet ported from 2.7
430
431 <tag>location_rewrite_access</tag>
432 <p>Not yet ported from 2.6
433
434 <tag>location_rewrite_children</tag>
435 <p>Not yet ported from 2.6
436
437 <tag>location_rewrite_concurrency</tag>
438 <p>Not yet ported from 2.6
439
440 <tag>location_rewrite_program</tag>
441 <p>Not yet ported from 2.6
442
443 <tag>refresh_pattern</tag>
444 <p><em>stale-while-revalidate=</em> not yet ported from 2.7
445 <p><em>ignore-stale-while-revalidate=</em> not yet ported from 2.7
446 <p><em>negative-ttl=</em> not yet ported from 2.7
447
448 <tag>refresh_stale_hit</tag>
449 <p>Not yet ported from 2.7
450
451 <tag>update_headers</tag>
452 <p>Not yet ported from 2.7
453
454</descrip>
455
6a9396a7
AJ
456<sect>Copyright
457<p>
ef57eb7b 458Copyright (C) 1996-2016 The Squid Software Foundation and contributors
6a9396a7
AJ
459<p>
460Squid software is distributed under GPLv2+ license and includes
461contributions from numerous individuals and organizations.
462Please see the COPYING and CONTRIBUTORS files for details.
463
4d0832d7 464</article>