Subject: p6 2.7 combining 206 & ETag, p5 5.3 If-Range

From: Henrik Nordstrom <[email-masked]>
Date: Fri, 24 Jul 2009 02:23:57 +0200

The requirements regarding combining partial responses have changed and
is stricter than 2616. 2616 only required a strong cache validator which
MAY mean Last-Modified in certain conditions (p4 4) not that there
necessarily is an ETag. Is this change really intended? Please note that
If-Range do allow for Last-Modified based validators.

Additionally p5 5.3 does allow for Last-Modified to be used in If-Range,
but does not really allow the server to respond with 206 in such case...

2616 13.5.4:

      - Both the incoming response and the cache entry have a cache
        validator.

      - The two cache validators match using the strong comparison
        function (see section 13.3.3).

p6 2.7:

        If the status code is 206 (partial content), both the stored and
        new responses MUST have ETags, and those ETags MUST match using
        the strong comparison function (see Section 4 of [Part4]).
        Otherwise, the responses MUST NOT be combined.

p5 5.3:

        If the client has no entity tag for an entity, but does have a
        Last-Modified date, it MAY use that date in an If-Range header.
        [...]
        
        If the entity tag given in the If-Range header matches the
        current entity tag for the entity, then the server SHOULD
        provide the specified sub-range of the entity using a 206
        (Partial Content) response. If the entity tag does not match,
        then the server SHOULD return the entire entity using a 200 (OK)
        response.

Suggested changes:

p6 2.7:

        If the status code is 206 (partial content), both the stored and
        new responses MUST have cache validators, and those cache
        validators MUST match using the strong comparison function (see
        Section 4 of [Part4]). Otherwise, the responses MUST NOT be
        combined.

p5 5.3:

        If the cache validator given in the If-Range header matches the
        current cache validator for the entity, then the server SHOULD
        provide the specified sub-range of the entity using a 206
        (Partial Content) response. If the cache validator does not
        match, then the server SHOULD return the entire entity using a
        200 (OK) response.

(only suggesting changing that paragraph, not removing the other one
partially quoted above)

Regards
Henrik

---

From: Mark Nottingham <[email-masked]>
Date: Fri, 24 Jul 2009 13:10:42 +1000

Good catch.

>        Section 4 of [Part4]). Otherwise, the responses MUST NOT be

Agreed.

I'll let others speak to the proposed change to p5.

--
Mark Nottingham     http://www.mnot.net/

---

From: Yves Lafon <[email-masked]>
Date: Fri, 24 Jul 2009 04:09:41 -0400 (EDT)

> I'll let others speak to the proposed change to p5.

The change to p5 is fixing the same kind of discrepancy, so the fix sounds 
perfectly right.

-- 
Baroula que barouleras, au tiéu toujou t'entourneras.

         ~~Yves