From: Amos Jeffries Date: Tue, 16 Oct 2012 01:38:43 +0000 (-0600) Subject: HTTP/1.1: honour Cache-Control before Pragma:no-cache X-Git-Tag: SQUID_3_4_0_1~564 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=cdf55306f9973fb689d8e407f7349c3938d56d92;p=thirdparty%2Fsquid.git HTTP/1.1: honour Cache-Control before Pragma:no-cache HTTPbis WG clarifications on the interaction between Cache-Control and Pragma specify that Cache-Control may be explicitly crafted to allow conditional caching by HTTP/1.1 caches and Pragma:no-cache supplied to prevent caching by older HTTP/1.0 caches unable to understand the Cache-Control properly. Squid does obey Cache-Control. So we can deprecate Pragma to the side cases when Cache-Control is absent entirely. --- diff --git a/src/client_side_request.cc b/src/client_side_request.cc index a4df356dd6..7eb4185ae3 100644 --- a/src/client_side_request.cc +++ b/src/client_side_request.cc @@ -1046,19 +1046,14 @@ clientInterpretRequestHeaders(ClientHttpRequest * http) request->flags.ims = 1; if (!request->flags.ignoreCc) { - if (req_hdr->has(HDR_PRAGMA)) { - String s = req_hdr->getList(HDR_PRAGMA); - - if (strListIsMember(&s, "no-cache", ',')) - no_cache=true; - - s.clean(); - } - if (request->cache_control) if (request->cache_control->noCache()) no_cache=true; + // RFC 2616: treat Pragma:no-cache as if it was Cache-Control:no-cache when Cache-Control is missing + else if (req_hdr->has(HDR_PRAGMA)) + no_cache = req_hdr->hasListMember(HDR_PRAGMA,"no-cache",','); + /* * Work around for supporting the Reload button in IE browsers when Squid * is used as an accelerator or transparent proxy, by turning accelerated