ftpget and 302

From: Jon Peatfield <J.S.Peatfield@dont-contact.us>
Date: Wed, 12 Feb 1997 04:17:37 +0000

My cache (1.1.5) has as a parent a Netscape 2.5 proxy. If I attempt to fetch
an ftp URL like:

  ftp://ftp.funet.fi/

all is fine. If I attempt to fetch:

  ftp://ftp.funet.fi/pub/

then my cache seems to actually ask for

  ftp://ftp.funet.fi/pub

This results in the NS proxy replying with a 302 redirect, my access.log gets:

 855719577.938 6050 131.111.17.60 TCP_MISS/302 382 GET
ftp://ftp.funet.fi/pub - TIMEOUT_FIRST_PARENT_MISS/wwwcache0.hensa.ac.uk
text/html

Now I know that if I do ask this parent for this without the / I do get a
redirect, but with the / it gives the correct result.
(Sending a 302 is better than having both return the same result, as we don't
end up with 2 copies in the cache).

Is Squid losing the trailing /? Why doesn't my browser obey the 302 and go
into a loop (does it detect loops)? (I'm tired, maybe I'm missing something).

Aha! in url.c:urlParse() is the section:

    /* remove trailing slashes from FTP URLs */
    if (protocol == PROTO_FTP) {
        t = urlpath + strlen(urlpath);
        while (t > urlpath && *(--t) == '/')
            *t = '\0';
    }

is this there for any reason, or is it just to stop Squid working with a
NetScape parent?

If ftpget needs the / stripping, then it should be done there, not in
urlParse().

I *almost* sent off an e-mail complaining about that stupid NS cache again (it
has been playing up a bit), but for once it is correct and Squid seems to be
wrong (unless there is a standard I'm not aware of, in which case NS are
wrong).

 -- Jon
Received on Tue Feb 11 1997 - 20:28:17 MST

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