Re: HTTP Compliance: entry is stale if request has max-age=0

From: Amos Jeffries <squid3_at_treenet.co.nz>
Date: Tue, 05 Oct 2010 01:33:14 +0000

On Mon, 04 Oct 2010 17:06:28 -0600, Alex Rousskov
<rousskov_at_measurement-factory.com> wrote:
> HTTP Compliance: entry is stale if request has max-age=0.
>
> We should always do validation for requests with Cache-Control
> max-age=0, even when entry age is also zero. In our case, RFC 2616 says:
>
> freshness_lifetime = max_age_value
> response_is_fresh = (freshness_lifetime > current_age)
>
> response_is_fresh is always false if freshness_lifetime is zero...
>
>
> The check code was introduced in r5998 with a "Import of fix-ranges
> branch" message. The code was commented out at the time of that commit,
> for reasons unknown.
>
> Test case:
> test_case/rfc2616/noSrv-hit-stale-max-age-req

+1 on the patch.

In other related bits;
 I think we have a documentation bug with ignore-reload. That violations
if() case above it silently tests and skips for ignore-reload && max-age=0.
 Could you please add a debugs() message to the if() case matching the
other trace cases?

The test itself looks wrong to me, I would expect max-age=* all equate to
a client reload request when the object is outside that age. In these cases
it's unclear if a reload should be allowed despite the admin preference (as
now done). Or if the client should receive a fail or stale response.
 My leaning is that the client should get the stale response. The admin
has explicitly required a violation of HTTP and chosen to face the
consequences. In 3.1+ reverse-proxies the http_port "ignore-cc" option
should be used instead.

Amos
Received on Tue Oct 05 2010 - 01:33:21 MDT

This archive was generated by hypermail 2.2.0 : Tue Oct 05 2010 - 12:00:04 MDT