squid-2.HEAD: proposed patch for max-age + no-cache combination

From: Alexander V. Lukyanov <lav@dont-contact.us>
Date: Sun, 27 Apr 2008 14:07:17 +0400

Hello!

Currently it is possible for squid to send out Cache-Control: max-age=XXX, no-cache
combination. But max-age does not make any sense when there is a no-cache flag.

Here is a patch to fix it. The patch skips setting max-age if there is no-cache flag.
If the client has sent the combination, it is forwarded to the server as before.

Index: http.c
===================================================================
RCS file: /squid/squid/src/http.c,v
retrieving revision 1.441
diff -u -p -r1.441 http.c
--- http.c 25 Apr 2008 20:39:36 -0000 1.441
+++ http.c 27 Apr 2008 04:59:06 -0000
@@ -1332,15 +1334,15 @@ httpBuildRequestHeader(request_t * reque
         HttpHdrCc *cc = httpHeaderGetCc(hdr_in);
         if (!cc)
             cc = httpHdrCcCreate();
- if (!EBIT_TEST(cc->mask, CC_MAX_AGE)) {
+ /* Set no-cache if determined needed but not found */
+ if (orig_request->flags.nocache && !httpHeaderHas(hdr_in, HDR_PRAGMA))
+ EBIT_SET(cc->mask, CC_NO_CACHE);
+ if (!EBIT_TEST(cc->mask, CC_NO_CACHE) && !EBIT_TEST(cc->mask, CC_MAX_AGE)) {
             const char *url = entry ? storeUrl(entry) : urlCanonical(orig_request);
             httpHdrCcSetMaxAge(cc, getMaxAge(url));
             if (strLen(request->urlpath))
                 assert(strstr(url, strBuf(request->urlpath)));
         }
- /* Set no-cache if determined needed but not found */
- if (orig_request->flags.nocache && !httpHeaderHas(hdr_in, HDR_PRAGMA))
- EBIT_SET(cc->mask, CC_NO_CACHE);
         /* Enforce sibling relations */
         if (flags.only_if_cached)
             EBIT_SET(cc->mask, CC_ONLY_IF_CACHED);
Received on Sun Apr 27 2008 - 10:24:23 MDT

This archive was generated by hypermail 2.2.0 : Wed Apr 30 2008 - 12:00:07 MDT