------------------------------------------------------------ revno: 11685 revision-id: squid3@treenet.co.nz-20121017004357-ud39bd5w7i7gwyfv parent: squid3@treenet.co.nz-20121017003925-pqrs38f5ldmksy22 committer: Amos Jeffries branch nick: 3.2 timestamp: Tue 2012-10-16 18:43:57 -0600 message: 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. ------------------------------------------------------------ # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: squid3@treenet.co.nz-20121017004357-ud39bd5w7i7gwyfv # target_branch: http://bzr.squid-cache.org/bzr/squid3/branches\ # /SQUID_3_2 # testament_sha1: 936f66c40171e3de62300781f2a41b6f1878626e # timestamp: 2012-10-17 00:44:26 +0000 # source_branch: http://bzr.squid-cache.org/bzr/squid3/branches\ # /SQUID_3_2 # base_revision_id: squid3@treenet.co.nz-20121017003925-\ # pqrs38f5ldmksy22 # # Begin patch === modified file 'src/client_side_request.cc' --- src/client_side_request.cc 2012-08-02 03:32:26 +0000 +++ src/client_side_request.cc 2012-10-17 00:43:57 +0000 @@ -1030,19 +1030,14 @@ request->flags.ims = 1; if (!request->flags.ignore_cc) { - 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) { 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