Re: Forging Last-Modified and Expiry times for FTP?

From: Henrik Nordstrom <hno@dont-contact.us>
Date: Thu, 13 May 1999 05:23:58 +0200

Michael Dean wrote:

> Actually, I have already tried that with
>
> refresh_pattern ^ftp: 1440 20% 10080

>
> 926562802.855 RELEASE FFFFFFFF 200 -1 -1 -1 application/octet-stream
> -1/294494 GET ftp://ftp.sage-au.org.au/pub/gnu/findutils/findutils-4.1.tar.gz

Ah, I misunderstood you there I think.

I thought your Squid was talking FTP to the firewall which didn't
support MDTM, SIZE and related FTP commands. Obviously your Squid is
talking HTTP to the firewall.

HTTP requires proxies and gateways to always add a Date header. To avoid
cache loops when one peer is broken and don't report any date
information Squid has hardcoded denial of caching of proxied objects
from such peers.

This limitation is in http.c, around line 238

        /*
         * Don't cache objects that need to be refreshed on next
request,
         * unless we know how to refresh it.
         */
        if (!refreshIsCachable(httpState->entry))
            return 0;
        /* don't cache objects from peers w/o LMT, Date, or Expires */
        /* check that is it enough to check headers @?@ */
        if (rep->date > -1)
            return 1;
        else if (rep->last_modified > -1)
            return 1;
        else if (!httpState->peer)
            return 1;

Add a return 1; statement immediately after the return 0 statement on
refreshIsCachable() to remove this sanity check.

        /*
         * Don't cache objects that need to be refreshed on next
request,
         * unless we know how to refresh it.
         */
        if (!refreshIsCachable(httpState->entry))
            return 0;
        /* else cachable */
        return 1;

--
Henrik Nordstrom
Spare time Squid hacker
Received on Wed May 12 1999 - 22:27:26 MDT

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