From: Amos Jeffries
Date: Sun, 19 Jul 2009 04:40:34 +0000 (+1200)
Subject: Prep for 3.1.0.11
X-Git-Tag: SQUID_3_2_0_1~864
X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0b8d12da325f78028a3ac4014ed659fddd19762b;p=thirdparty%2Fsquid.git
Prep for 3.1.0.11
---
diff --git a/ChangeLog b/ChangeLog
index 8f71df0253..3963cc78f5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+Changes to squid-3.1.0.11 (19 Jul 2009):
+
+ - Bug 2087: Support adaptation sets and chains
+ - Bug 2459: dns error message broken when error handling delayed
+ - Support ICAP Retry
+ - Support ICAP retries based on the ICAP responses status code
+ - Support logging ICAP
+ - Support logging total DNS wait time
+ - Support logging response times of adaptation transactions
+ - General logging enhancements
+ - Dynamically form chains based on ICAP X-Next-Services header
+ - Support cross-transactional ICAP header exchange
+ - ... and much adaptation polish and improvements
+
Changes to squid-3.1.0.10 (18 Jul 2009):
- Bug 2680: Regression Crash after rotate with no helpers running
diff --git a/doc/release-notes/release-3.1.html b/doc/release-notes/release-3.1.html
index 21ff6ef6fe..77fe289925 100644
--- a/doc/release-notes/release-3.1.html
+++ b/doc/release-notes/release-3.1.html
@@ -2,10 +2,10 @@
- Squid 3.1.0.10 release notes
+ Squid 3.1.0.11 release notes
-Squid 3.1.0.10 release notes
+Squid 3.1.0.11 release notes
Squid Developers
@@ -32,6 +32,7 @@ for Applied Network Research and members of the Web Caching community.
2.6 Quality of Service (QoS) Flow support
2.7 SSL Bump (for HTTPS Filtering and Adaptation)
2.8 eCAP Adaptation Module support
+2.9 ICAP Bypass and Retry enhancements
@@ -80,7 +81,7 @@ for Applied Network Research and members of the Web Caching community.
-The Squid Team are pleased to announce the release of Squid-3.1.0.10 for testing.
+The Squid Team are pleased to announce the release of Squid-3.1.0.11 for testing.
This new release is available for download from
http://www.squid-cache.org/Versions/v3/3.1/ or the
mirrors.
@@ -115,6 +116,7 @@ While this release is not deemed ready for production use, we believe it is read
Quality of Service (QoS) Flow support
SSL Bump (for HTTPS Filtering and Adaptation)
eCAP Adaptation Module support
+ICAP Bypass and Retry enhancements
Most user-facing changes are reflected in squid.conf (see below).
@@ -343,6 +345,67 @@ While decrypted, the traffic can be inspected using ICAP.
Details in
The Squid wiki
+
+
+Details in
+The Squid wiki
+
+ICAP is now extended with full bypass and dynamic chain routing to handle multiple
+adaptation services.
+
+ICAP Adaptation Service Sets and Chains
+
+An adaptation service set contains similar, interchangeable services. No more
+than one service is successfully applied. If one service is down or fails,
+Squid can use another service. Think "hot standby" or "spare" ICAP servers.
+
+Sets may seem similar to the existing "service bypass" feature, but they allow
+the failed adaptation to be retried and succeed if a replacement service is
+available. The services in a set may be all optional or all essential,
+depending on whether ignoring the entire set is acceptable. The mixture of
+optional and essential services in a set is supported, but yields results that
+may be difficult for a human to anticipate or interpret. Squid warns when it
+detects such a mixture.
+
+When performing adaptations with a set, failures at a service (optional or
+essential, does not matter) are retried with a different service if possible.
+If there are no more replacement services left to try, the failure is treated
+depending on whether the last service tried was optional or essential: Squid
+either tries to ignore the failure and proceed or terminates the master
+transaction.
+
+An adaptation chain is a list of different services applied one after another,
+forming an adaptation pipeline. Services in a chain may be optional or
+essential. When performing adaptations, failures at an optional service are
+ignored as if the service did not exist in the chain.
+
+Request satisfaction terminates the adaptation chain.
+
+When forming a set or chain for a given transaction, optional down services are ignored as if they did not exist.
+
+ICAP and eCAP services can be mixed and matched in an adaptation set or chain.
+
+Dynamically form adaptation chains based on the ICAP X-Next-Services header.
+
+If an ICAP service with the routing=1 option in squid.conf returns an ICAP
+X-Next-Services response header during a successful REQMOD or RESPMOD
+transaction, Squid abandons the original adaptation plan and forms a new
+adaptation chain consisting of services identified in the X-Next-Services
+header value (using a comma-separated list of adaptation service names from
+squid.conf). The dynamically created chain is destroyed once the new plan is
+completed or replaced.
+
+This feature is useful when a custom adaptation service knows which other
+services are applicable to the message being adapted.
+
+Limit adaptation iterations to adaptation_service_iteration_limit to protect
+Squid from infinite adaptation loops caused by ICAP services constantly
+including themselves in the dynamic adaptation chain they request. When the
+limit is exceeded, the master transaction fails. The default limit of 16
+should be large enough to not require an explicit configuration in most
+environments yet may be small enough to limit side-effects of loops.
+
@@ -627,29 +690,137 @@ Default: ON
It is currently not possible to apply more than one adaptation
service at the same vectoring point to the same HTTP transaction.
+
+
+
- See also: icap_service and ecap_service
+adaptation_masterx_shared_names
+
+
+ For each master transaction (i.e., the HTTP request and response
+ sequence, including all related ICAP and eCAP exchanges), Squid
+ maintains a table of metadata. The table entries are (name, value)
+ pairs shared among eCAP and ICAP exchanges. The table is destroyed
+ with the master transaction.
+
+ This option specifies the table entry names that Squid must accept
+ from and forward to the adaptation transactions.
+
+ An ICAP REQMOD or RESPMOD transaction may set an entry in the
+ shared table by returning an ICAP header field with a name
+ specified in adaptation_masterx_shared_names. Squid will store
+ and forward that ICAP header field to subsequent ICAP
+ transactions within the same master transaction scope.
+
+ Only one shared entry name is supported at this time.
-adaptation_service_set
+adaptation_service_chain
- Defines a named adaptation service set. The set is populated in
- the order of adaptation_service_set directives in this file.
- When adaptation ACLs are processed, the first and only the first
- applicable adaptation service from the set will be used. Thus,
- the set should group similar, redundant services, rather than a
- chain of complementary services.
+ Configures a list of complementary services that will be applied
+ one-by-one, forming an adaptation chain or pipeline. This is useful
+ when Squid must perform different adaptations on the same message.
- If you have a single adaptation service, you do not need to
- define a set containing it because adaptation_access accepts
- service names.
+ adaptation_service_chain chain_name service_name1 svc_name2 ...
- Example:
- adaptation_service_set svcBlocker urlFilterPrimary urlFilterBackup
- adaptation service_set svcLogger loggerLocal loggerRemote
+ The named services are used in the chain declaration order. The first
+ applicable adaptation service from the chain is used first. The next
+ applicable service is applied to the successful adaptation results of
+ the previous service in the chain.
+
+ When adaptation starts, broken services are ignored as if they were
+ not a part of the chain. A broken service is a down optional service.
+
+ Request satisfaction terminates the adaptation chain because Squid
+ does not currently allow declaration of RESPMOD services at the
+ "reqmod_precache" vectoring point (see icap_service or ecap_service).
+
+ The services in a chain must be attached to the same vectoring point
+ (e.g., pre-cache) and use the same adaptation method (e.g., REQMOD).
+
+ A chain may contain a mix of optional and essential services. If an
+ essential adaptation fails (or the failure cannot be bypassed for
+ other reasons), the master transaction fails. Otherwise, the failure
+ is bypassed as if the failed adaptation service was not in the chain.
+
+
+
+
+adaptation_service_iteration_limit
+
+
+ Limits the number of iterations allowed when applying adaptation
+ services to a message. If your longest adaptation set or chain
+ may have more than 16 services, increase the limit beyond its
+ default value of 16. If detecting infinite iteration loops sooner
+ is critical, make the iteration limit match the actual number
+ of services in your longest adaptation set or chain.
+
+ Infinite adaptation loops are most likely with routing services.
+
+
+
+
+adaptation_service_set
+
+
+ Configures an ordered set of similar, redundant services. This is
+ useful when hot standby or backup adaptation servers are available.
+
+ adaptation_service_set set_name service_name1 service_name2 ...
+
+ The named services are used in the set declaration order. The first
+ applicable adaptation service from the set is used first. The next
+ applicable service is tried if and only if the transaction with the
+ previous service fails and the message waiting to be adapted is still
+ intact.
+
+ When adaptation starts, broken services are ignored as if they were
+ not a part of the set. A broken service is a down optional service.
+
+ The services in a set must be attached to the same vectoring point
+ (e.g., pre-cache) and use the same adaptation method (e.g., REQMOD).
+
+ If all services in a set are optional then adaptation failures are
+ bypassable. If all services in the set are essential, then a
+ transaction failure with one service may still be retried using
+ another service from the set, but when all services fail, the master
+ transaction fails as well.
+
+ A set may contain a mix of optional and essential services, but that
+ is likely to lead to surprising results because broken services become
+ ignored (see above), making previously bypassable failures fatal.
+ Technically, it is the bypassability of the last failed service that
+ matters.
+
+
+
+
+chunked_request_body_max_size
+New option to enable handing of broken HTTP/1.1 clients sending chunk requests.
+
+ A broken or confused HTTP/1.1 client may send a chunked HTTP
+ request to Squid. Squid does not have full support for that
+ feature yet. To cope with such requests, Squid buffers the
+ entire request and then dechunks request body to create a
+ plain HTTP/1.0 request with a known content length. The plain
+ request is then used by the rest of Squid code as usual.
+
+ The option value specifies the maximum size of the buffer used
+ to hold the request before the conversion. If the chunked
+ request size exceeds the specified limit, the conversion
+ fails, and the client receives an "unsupported request" error,
+ as if dechunking was disabled.
+
+ Dechunking is enabled by default. To disable conversion of
+ chunked requests, set the maximum to zero.
+
+ Request dechunking feature and this option in particular are a
+ temporary hack. When chunking requests and responses are fully
+ supported, there will be no need to buffer a chunked request.
@@ -837,6 +1008,112 @@ New translations can be downloaded from http://www.squid-cache.org/Versions/lang
Controls how many different forward paths Squid will try
before giving up. Default: 10
+icap_log
+New option to write ICAP log files record ICAP transaction summaries, one line per
+transaction. Similar to access.log.
+
+ The icap_log option format is:
+ icap_log <filepath> [<logformat name> [acl acl ...]]
+ icap_log none [acl acl ...]]
+
+ Please see access_log option documentation for details. The two
+ kinds of logs share the overall configuration approach and many
+ features.
+
+ ICAP processing of a single HTTP message or transaction may
+ require multiple ICAP transactions. In such cases, multiple
+ ICAP transaction log lines will correspond to a single access
+ log line.
+
+ ICAP log uses logformat codes that make sense for an ICAP
+ transaction. Header-related codes are applied to the HTTP header
+ embedded in an ICAP server response, with the following caveats:
+ For REQMOD, there is no HTTP response header unless the ICAP
+ server performed request satisfaction. For RESPMOD, the HTTP
+ request header is the header sent to the ICAP server. For
+ OPTIONS, there are no HTTP headers.
+
+ The following format codes are also available for ICAP logs:
+
+ icap::<A ICAP server IP address. Similar to <A.
+
+ icap::<service_name ICAP service name from the icap_service
+ option in Squid configuration file.
+
+ icap::ru ICAP Request-URI. Similar to ru.
+
+ icap::rm ICAP request method (REQMOD, RESPMOD, or
+ OPTIONS). Similar to existing rm.
+
+ icap::>st Bytes sent to the ICAP server (TCP payload
+ only; i.e., what Squid writes to the socket).
+
+ icap::<st Bytes received from the ICAP server (TCP
+ payload only; i.e., what Squid reads from
+ the socket).
+
+ icap::tr Transaction response time (in
+ milliseconds). The timer starts when
+ the ICAP transaction is created and
+ stops when the transaction is completed.
+ Similar to tr.
+
+ icap::tio Transaction I/O time (in milliseconds). The
+ timer starts when the first ICAP request
+ byte is scheduled for sending. The timers
+ stops when the last byte of the ICAP response
+ is received.
+
+ icap::to Transaction outcome: ICAP_ERR* for all
+ transaction errors, ICAP_OPT for OPTION
+ transactions, ICAP_ECHO for 204
+ responses, ICAP_MOD for message
+ modification, and ICAP_SAT for request
+ satisfaction. Similar to Ss.
+
+ icap::Hs ICAP response status code. Similar to Hs.
+
+ icap::>h ICAP request header(s). Similar to >h.
+
+ icap::<h ICAP response header(s). Similar to <h.
+
+ The default ICAP log format, which can be used without an explicit
+ definition, is called icap_squid:
+
+logformat icap_squid %ts.%03tu %6icap::tr %>a %icap::to/%03icap::Hs %icap::<size %icap::rm %icap::ru% %un -/%icap::<A -
+
+
+
+
+icap_retry
+New option to determine which retriable ICAP transactions are
+retried.
+
+ Transactions that received a complete ICAP response
+ and did not have to consume or produce HTTP bodies to receive
+ that response are usually retriable.
+
+ icap_retry allow|deny [!]aclname ...
+
+ Squid automatically retries some ICAP I/O timeouts and errors
+ due to persistent connection race conditions.
+
+
+
+
+icap_retry_limit
+
+
+ Limits the number of retries allowed. When set to zero (default),
+ no retries are allowed.
+
+ Communication errors due to persistent connection race
+ conditions are unavoidable, automatically retried, and do not
+ count against this limit.
+
+
+
+
include
New option to import entire secondary configuration files into squid.conf.
@@ -863,6 +1140,15 @@ preloaded module(s).
+log_icap aclname [aclname ...]
+
+
+ This options allows you to control which requests get logged
+ to icap.log. See the icap_log directive for ICAP log details.
+
+
+
+
log_uses_indirect_client
Whether to use any result found by follow_x_forwarded_for in access.log.
Default: ON
@@ -933,8 +1219,6 @@ DEFAULT: None bypassed.
terminate the transaction. Bypassing validation errors is dangerous
because an error usually implies that the server cannot be trusted and
the connection may be insecure.
-
- See also: sslproxy_flags and DONT_VERIFY_PEER.
@@ -1187,9 +1471,102 @@ For now option 'tproxy' remains with old behaviour meaning fully-invisible proxy
https_port intercept sslbump connection-auth[=on|off]
New port options. see http_port.
+icap_service bypass=on|off|1|0 routing=on|off|1|0
+New options 'bypass=' and 'routing='.
+
+ bypass=on|off|1|0
+ If set to 'on' or '1', the ICAP service is treated as
+ optional. If the service cannot be reached or malfunctions,
+ Squid will try to ignore any errors and process the message as
+ if the service was not enabled. No all ICAP errors can be
+ bypassed. If set to 0, the ICAP service is treated as
+ essential and all ICAP errors will result in an error page
+ returned to the HTTP client.
+
+ Bypass is off by default: services are treated as essential.
+
+ routing=on|off|1|0
+ If set to 'on' or '1', the ICAP service is allowed to
+ dynamically change the current message adaptation plan by
+ returning a chain of services to be used next. The services
+ are specified using the X-Next-Services ICAP response header
+ value, formatted as a comma-separated list of service names.
+ Each named service should be configured in squid.conf and
+ should have the same method and vectoring point as the current
+ ICAP transaction. Services violating these rules are ignored.
+ An empty X-Next-Services value results in an empty plan which
+ ends the current adaptation.
+
+ Routing is not allowed by default: the ICAP X-Next-Services
+ response header is ignored.
+
+
+
+
logfile_rotate
No longer controls cache.log rotation. Use debug_options rotate=N instead.
+logformat
+New log format tag sets %icap::* %adapt::* for adaptation information.
+%Hs tag deprecated and replaced by request/reply specific >Hs and <Hs
+HTTP request/reply format tags may now be optionally prefixed with http::.
+Old forms will be deprecated in some as yet undecided future release.
+
+ dt Total time spent making DNS lookups (milliseconds)
+
+ [http::]>Hs HTTP status code sent to the client
+ [http::]<Hs HTTP status code received from the next hop
+ [http::]>sh Received HTTP request headers size
+ [http::]<sh Sent HTTP reply headers size
+ [http::]<pt Peer response time in milliseconds. The timer starts
+ when the last request byte is sent to the next hop
+ and stops when the last response byte is received.
+ [http::]<tt Total server-side time in milliseconds. The timer
+ starts with the first connect request (or write I/O)
+ sent to the first selected peer. The timer stops
+ with the last I/O with the last peer.
+
+ If ICAP is enabled, the following two codes become available (as
+ well as ICAP log codes documented with the icap_log option):
+
+ icap::tt Total ICAP processing time for the HTTP
+ transaction. The timer ticks when ICAP
+ ACLs are checked and when ICAP
+ transaction is in progress.
+
+ icap::<last_h The header of the last ICAP response
+ related to the HTTP transaction. Like
+ <h, accepts an optional header name
+ argument. Will not change semantics
+ when multiple ICAP transactions per HTTP
+ transaction are supported.
+
+ If adaptation is enabled the following two codes become available:
+
+ adapt::sum_trs Summed adaptation transaction response
+ times recorded as a comma-separated list in
+ the order of transaction start time. Each time
+ value is recorded as an integer number,
+ representing response time of one or more
+ adaptation (ICAP or eCAP) transaction in
+ milliseconds. When a failed transaction is
+ being retried or repeated, its time is not
+ logged individually but added to the
+ replacement (next) transaction.
+
+ adapt::all_trs All adaptation transaction response times.
+ Same as adaptation_strs but response times of
+ individual transactions are never added
+ together. Instead, all transaction response
+ times are recorded individually.
+
+ You can prefix adapt::*_trs format codes with adaptation
+ service name in curly braces to record response time(s) specific
+ to that service. For example: %{my_service}adapt::sum_trs
+
+
+
+
maximum_object_size_in_memory
Default size limit increased to 512KB.
diff --git a/doc/release-notes/release-3.1.sgml b/doc/release-notes/release-3.1.sgml
index 7bdcc623c2..df5c39708b 100644
--- a/doc/release-notes/release-3.1.sgml
+++ b/doc/release-notes/release-3.1.sgml
@@ -1,6 +1,6 @@
-Squid 3.1.0.10 release notes
+Squid 3.1.0.11 release notes
Squid Developers
@@ -13,7 +13,7 @@ for Applied Network Research and members of the Web Caching community.
Notice
-The Squid Team are pleased to announce the release of Squid-3.1.0.10 for testing.
+The Squid Team are pleased to announce the release of Squid-3.1.0.11 for testing.
This new release is available for download from or the .
@@ -45,6 +45,7 @@ The most important of these new features are:
- Quality of Service (QoS) Flow support
- SSL Bump (for HTTPS Filtering and Adaptation)
- eCAP Adaptation Module support
+
- ICAP Bypass and Retry enhancements
Most user-facing changes are reflected in squid.conf (see below).
@@ -251,6 +252,65 @@ While decrypted, the traffic can be inspected using ICAP.
Details in
+ICAP Bypass and Retry enhancements
+
+Details in
+
+ICAP is now extended with full bypass and dynamic chain routing to handle multiple
+ adaptation services.
+
+ICAP Adaptation Service Sets and Chains
+
+An adaptation service set contains similar, interchangeable services. No more
+ than one service is successfully applied. If one service is down or fails,
+ Squid can use another service. Think "hot standby" or "spare" ICAP servers.
+
+
Sets may seem similar to the existing "service bypass" feature, but they allow
+ the failed adaptation to be retried and succeed if a replacement service is
+ available. The services in a set may be all optional or all essential,
+ depending on whether ignoring the entire set is acceptable. The mixture of
+ optional and essential services in a set is supported, but yields results that
+ may be difficult for a human to anticipate or interpret. Squid warns when it
+ detects such a mixture.
+
+
When performing adaptations with a set, failures at a service (optional or
+ essential, does not matter) are retried with a different service if possible.
+ If there are no more replacement services left to try, the failure is treated
+ depending on whether the last service tried was optional or essential: Squid
+ either tries to ignore the failure and proceed or terminates the master
+ transaction.
+
+
An adaptation chain is a list of different services applied one after another,
+ forming an adaptation pipeline. Services in a chain may be optional or
+ essential. When performing adaptations, failures at an optional service are
+ ignored as if the service did not exist in the chain.
+
+
Request satisfaction terminates the adaptation chain.
+
+
When forming a set or chain for a given transaction, optional down services are ignored as if they did not exist.
+
+
ICAP and eCAP services can be mixed and matched in an adaptation set or chain.
+
+Dynamically form adaptation chains based on the ICAP X-Next-Services header.
+
+If an ICAP service with the routing=1 option in squid.conf returns an ICAP
+ X-Next-Services response header during a successful REQMOD or RESPMOD
+ transaction, Squid abandons the original adaptation plan and forms a new
+ adaptation chain consisting of services identified in the X-Next-Services
+ header value (using a comma-separated list of adaptation service names from
+ squid.conf). The dynamically created chain is destroyed once the new plan is
+ completed or replaced.
+
+
This feature is useful when a custom adaptation service knows which other
+ services are applicable to the message being adapted.
+
+
Limit adaptation iterations to adaptation_service_iteration_limit to protect
+ Squid from infinite adaptation loops caused by ICAP services constantly
+ including themselves in the dynamic adaptation chain they request. When the
+ limit is exceeded, the master transaction fails. The default limit of 16
+ should be large enough to not require an explicit configuration in most
+ environments yet may be small enough to limit side-effects of loops.
+
Windows support
This Squid version can run on Windows as a system service using the Cygwin emulation environment,
@@ -481,26 +541,123 @@ This section gives a thorough account of those changes in three categories:
It is currently not possible to apply more than one adaptation
service at the same vectoring point to the same HTTP transaction.
+
- See also: icap_service and ecap_service
+ adaptation_masterx_shared_names
+
+ For each master transaction (i.e., the HTTP request and response
+ sequence, including all related ICAP and eCAP exchanges), Squid
+ maintains a table of metadata. The table entries are (name, value)
+ pairs shared among eCAP and ICAP exchanges. The table is destroyed
+ with the master transaction.
+
+ This option specifies the table entry names that Squid must accept
+ from and forward to the adaptation transactions.
+
+ An ICAP REQMOD or RESPMOD transaction may set an entry in the
+ shared table by returning an ICAP header field with a name
+ specified in adaptation_masterx_shared_names. Squid will store
+ and forward that ICAP header field to subsequent ICAP
+ transactions within the same master transaction scope.
+
+ Only one shared entry name is supported at this time.
- adaptation_service_set
+ adaptation_service_chain
- Defines a named adaptation service set. The set is populated in
- the order of adaptation_service_set directives in this file.
- When adaptation ACLs are processed, the first and only the first
- applicable adaptation service from the set will be used. Thus,
- the set should group similar, redundant services, rather than a
- chain of complementary services.
+ Configures a list of complementary services that will be applied
+ one-by-one, forming an adaptation chain or pipeline. This is useful
+ when Squid must perform different adaptations on the same message.
- If you have a single adaptation service, you do not need to
- define a set containing it because adaptation_access accepts
- service names.
+ adaptation_service_chain chain_name service_name1 svc_name2 ...
- Example:
- adaptation_service_set svcBlocker urlFilterPrimary urlFilterBackup
- adaptation service_set svcLogger loggerLocal loggerRemote
+ The named services are used in the chain declaration order. The first
+ applicable adaptation service from the chain is used first. The next
+ applicable service is applied to the successful adaptation results of
+ the previous service in the chain.
+
+ When adaptation starts, broken services are ignored as if they were
+ not a part of the chain. A broken service is a down optional service.
+
+ Request satisfaction terminates the adaptation chain because Squid
+ does not currently allow declaration of RESPMOD services at the
+ "reqmod_precache" vectoring point (see icap_service or ecap_service).
+
+ The services in a chain must be attached to the same vectoring point
+ (e.g., pre-cache) and use the same adaptation method (e.g., REQMOD).
+
+ A chain may contain a mix of optional and essential services. If an
+ essential adaptation fails (or the failure cannot be bypassed for
+ other reasons), the master transaction fails. Otherwise, the failure
+ is bypassed as if the failed adaptation service was not in the chain.
+
+
+ adaptation_service_iteration_limit
+
+ Limits the number of iterations allowed when applying adaptation
+ services to a message. If your longest adaptation set or chain
+ may have more than 16 services, increase the limit beyond its
+ default value of 16. If detecting infinite iteration loops sooner
+ is critical, make the iteration limit match the actual number
+ of services in your longest adaptation set or chain.
+
+ Infinite adaptation loops are most likely with routing services.
+
+
+ adaptation_service_set
+
+ Configures an ordered set of similar, redundant services. This is
+ useful when hot standby or backup adaptation servers are available.
+
+ adaptation_service_set set_name service_name1 service_name2 ...
+
+ The named services are used in the set declaration order. The first
+ applicable adaptation service from the set is used first. The next
+ applicable service is tried if and only if the transaction with the
+ previous service fails and the message waiting to be adapted is still
+ intact.
+
+ When adaptation starts, broken services are ignored as if they were
+ not a part of the set. A broken service is a down optional service.
+
+ The services in a set must be attached to the same vectoring point
+ (e.g., pre-cache) and use the same adaptation method (e.g., REQMOD).
+
+ If all services in a set are optional then adaptation failures are
+ bypassable. If all services in the set are essential, then a
+ transaction failure with one service may still be retried using
+ another service from the set, but when all services fail, the master
+ transaction fails as well.
+
+ A set may contain a mix of optional and essential services, but that
+ is likely to lead to surprising results because broken services become
+ ignored (see above), making previously bypassable failures fatal.
+ Technically, it is the bypassability of the last failed service that
+ matters.
+
+
+ chunked_request_body_max_size
+
New option to enable handing of broken HTTP/1.1 clients sending chunk requests.
+
+ A broken or confused HTTP/1.1 client may send a chunked HTTP
+ request to Squid. Squid does not have full support for that
+ feature yet. To cope with such requests, Squid buffers the
+ entire request and then dechunks request body to create a
+ plain HTTP/1.0 request with a known content length. The plain
+ request is then used by the rest of Squid code as usual.
+
+ The option value specifies the maximum size of the buffer used
+ to hold the request before the conversion. If the chunked
+ request size exceeds the specified limit, the conversion
+ fails, and the client receives an "unsupported request" error,
+ as if dechunking was disabled.
+
+ Dechunking is enabled by default. To disable conversion of
+ chunked requests, set the maximum to zero.
+
+ Request dechunking feature and this option in particular are a
+ temporary hack. When chunking requests and responses are fully
+ supported, there will be no need to buffer a chunked request.
delay_pool_uses_indirect_client
@@ -668,6 +825,105 @@ This section gives a thorough account of those changes in three categories:
Controls how many different forward paths Squid will try
before giving up. Default: 10
+ icap_log
+
New option to write ICAP log files record ICAP transaction summaries, one line per
+ transaction. Similar to access.log.
+
+ The icap_log option format is:
+ icap_log [ [acl acl ...]]
+ icap_log none [acl acl ...]]
+
+ Please see access_log option documentation for details. The two
+ kinds of logs share the overall configuration approach and many
+ features.
+
+ ICAP processing of a single HTTP message or transaction may
+ require multiple ICAP transactions. In such cases, multiple
+ ICAP transaction log lines will correspond to a single access
+ log line.
+
+ ICAP log uses logformat codes that make sense for an ICAP
+ transaction. Header-related codes are applied to the HTTP header
+ embedded in an ICAP server response, with the following caveats:
+ For REQMOD, there is no HTTP response header unless the ICAP
+ server performed request satisfaction. For RESPMOD, the HTTP
+ request header is the header sent to the ICAP server. For
+ OPTIONS, there are no HTTP headers.
+
+ The following format codes are also available for ICAP logs:
+
+ icap::st Bytes sent to the ICAP server (TCP payload
+ only; i.e., what Squid writes to the socket).
+
+ icap::h ICAP request header(s). Similar to >h.
+
+ icap::a %icap::to/%03icap::Hs %icap::
+
+ icap_retry
+ New option to determine which retriable ICAP transactions are
+ retried.
+
+ Transactions that received a complete ICAP response
+ and did not have to consume or produce HTTP bodies to receive
+ that response are usually retriable.
+
+ icap_retry allow|deny [!]aclname ...
+
+ Squid automatically retries some ICAP I/O timeouts and errors
+ due to persistent connection race conditions.
+
+
+ icap_retry_limit
+
+ Limits the number of retries allowed. When set to zero (default),
+ no retries are allowed.
+
+ Communication errors due to persistent connection race
+ conditions are unavoidable, automatically retried, and do not
+ count against this limit.
+
+
include
New option to import entire secondary configuration files into squid.conf.
@@ -690,6 +946,12 @@ This section gives a thorough account of those changes in three categories:
loadable_modules @DEFAULT_PREFIX@/lib/MinimalAdapter.so
+ log_icap aclname [aclname ...]
+
+ This options allows you to control which requests get logged
+ to icap.log. See the icap_log directive for ICAP log details.
+
+
log_uses_indirect_client
Whether to use any result found by follow_x_forwarded_for in access.log.
Default: ON
@@ -751,8 +1013,6 @@ NOCOMMENT_START
terminate the transaction. Bypassing validation errors is dangerous
because an error usually implies that the server cannot be trusted and
the connection may be insecure.
-
- See also: sslproxy_flags and DONT_VERIFY_PEER.
qos_flows local-hit= sibling-hit= parent-hit=
@@ -981,9 +1241,98 @@ NOCOMMENT_START
https_port intercept sslbump connection-auth[=on|off]
New port options. see http_port.
+ icap_service bypass=on|off|1|0 routing=on|off|1|0
+
New options 'bypass=' and 'routing='.
+
+ bypass=on|off|1|0
+ If set to 'on' or '1', the ICAP service is treated as
+ optional. If the service cannot be reached or malfunctions,
+ Squid will try to ignore any errors and process the message as
+ if the service was not enabled. No all ICAP errors can be
+ bypassed. If set to 0, the ICAP service is treated as
+ essential and all ICAP errors will result in an error page
+ returned to the HTTP client.
+
+ Bypass is off by default: services are treated as essential.
+
+ routing=on|off|1|0
+ If set to 'on' or '1', the ICAP service is allowed to
+ dynamically change the current message adaptation plan by
+ returning a chain of services to be used next. The services
+ are specified using the X-Next-Services ICAP response header
+ value, formatted as a comma-separated list of service names.
+ Each named service should be configured in squid.conf and
+ should have the same method and vectoring point as the current
+ ICAP transaction. Services violating these rules are ignored.
+ An empty X-Next-Services value results in an empty plan which
+ ends the current adaptation.
+
+ Routing is not allowed by default: the ICAP X-Next-Services
+ response header is ignored.
+
+
logfile_rotate
No longer controls cache.log rotation. Use debug_options rotate=N instead.
+ logformat
+
New log format tag sets %icap::* %adapt::* for adaptation information.
+ %Hs tag deprecated and replaced by request/reply specific >Hs and <Hs
+ HTTP request/reply format tags may now be optionally prefixed with http::.
+ Old forms will be deprecated in some as yet undecided future release.
+
+ dt Total time spent making DNS lookups (milliseconds)
+
+ [http::]>Hs HTTP status code sent to the client
+ [http::]sh Received HTTP request headers size
+ [http::]
+
maximum_object_size_in_memory
Default size limit increased to 512KB.