Re: Squid, Reload and cache hierarchies

From: Stephane Bortzmeyer <[email protected]>
Date: Thu, 18 Jul 96 11:45:51 +0200

On Thursday 18 July 96, at 1 h 5, the keyboard of Henrik Nordstrom
<henrik.nordstrom@ida.his.se> wrote:

> Both should bypass the hierarchy since Pragma: no-cache is set.

They do not. A Lynx reload does this on the Squid cache:

[17/Jul/1996:17:33:53 +0200] icp.c:1583: parseHttpRequest:
Complete request received
[17/Jul/1996:17:33:53 +0200] icp.c:651: icp_hit_or_miss: GET
<URL:http://www.eu.org/>
[17/Jul/1996:17:33:53 +0200] icp.c:668: icp_hit_or_miss: REQ_NOCACHE =
SET
[17/Jul/1996:17:33:53 +0200] icp.c:670: icp_hit_or_miss: REQ_CACHABLE =
SET
[17/Jul/1996:17:33:53 +0200] icp.c:672: icp_hit_or_miss:
REQ_HIERARCHICAL = SET
[17/Jul/1996:17:33:53 +0200] icp.c:716: icp_hit_or_miss: TCP_REFRESH for
'http://www.eu.org/'
[17/Jul/1996:17:33:53 +0200] icp.c:781: icpProcessMISS: 'GET
http://www.eu.org/'

REQ_HIERARCHICAL is SET which is not the case with Netscape, because of
the IMS.

The routine which determines if the request can use hierarchy does not
use "Pragma: No-Cache". A bug? IMHO, no. A reload should be transmitted
and update the whole hierarchy.

static int icpHierarchical(icpState)
     icpStateData *icpState;
{
    char *request = icpState->url;
    request_t *req = icpState->request;
    method_t method = req->method;
    wordlist *p = NULL;
    if (BIT_TEST(icpState->flags, REQ_IMS))
        return 0;
    if (BIT_TEST(icpState->flags, REQ_AUTH))
        return 0;
    if (method != METHOD_GET)
        return 0;
    /* scan hierarchy_stoplist */
    for (p = getHierarchyStoplist(); p; p = p->next)
        if (strstr(request, p->key))
            return 0;
    if (BIT_TEST(icpState->flags, REQ_LOOPDETECT))
        return 0;
    if (req->protocol == PROTO_HTTP)
        return httpCachable(request, method);
    if (req->protocol == PROTO_FTP)
        return ftpCachable(request);
    if (req->protocol == PROTO_GOPHER)
        return gopherCachable(request);
    if (req->protocol == PROTO_WAIS)
        return 0;
    if (req->protocol == PROTO_CACHEOBJ)
        return 0;
    return 1;
}

> Are you inside_firewall with more than one parent? If you are,

No. No firewalls at all. And just one parent (no neighbour).
Received on Thu Jul 18 1996 - 02:47:04 MDT

This archive was generated by hypermail pre-2.1.9 : Tue Dec 09 2003 - 16:32:36 MST