Squid ETag support, things to verify

Test Result / Notes
Plain cache hits for varying objects Memory hits works fine. No memory leak.
Disk hits works fine. No memory leak.
Cache hits for new request variants Works, but there was memory leak in "Short Strings".
Cache validations of a Vary:ing object Works fine.
Client-side If-None-Match with a matching hit (304) Failed if the object needed to be revalidated. In such case the object was returned even if the entity tag matched.
Client-side If-None-Match with cache hit (no tag match, 200) Works fine.
Client-side If-None-Match with a expired object, no change on the origin server Works fine, except that the client receives a old Date header (expected. known generic bug)
Client-side If-None-Match with a expired object, change on the origin server Works fine.
Client-side If-None-Match with a cache miss Works fine. Client receives the server reply, which might be a 304 reply. If a 304 reply with a entity tag then the ETag index is updated.
Client-side If-Match hit Works fine
Client-side If-Match, expired hit Works fine
Client-side If-Match, expired hit where origin object has changed Works fine. Server reply is received.
Client-side If-Match cache hit with no tag match (miss) Works fine. Server reply is received.
Client-side If-Match cache miss Works fine. Server reply is received
Client-side If-Range with a entity tag Works fine.
Client-side If-Range with a LMT timestamp Failed if the LMT timestamp was later than the object.
Server-side If-None-Match on cache validations Works fine
Server-side If-None-Match on varying cache misses Works fine, and returns the proper cached variant if a 304 is received.
Aborted requests while parsing the etag map Seems to work, but I have not found a 100% conclusive test case (this test is highly dependent on timing)
Varying objects without ETag
Interaction between old "vary" store format and this patch
Was two bugs. First tried to update the ETag map without having a ETag value, then crashed on hits due to not finding any ETag map information.
X-Accelerator-Vary Seems to work
vary_ignore_expire fails after validation have been forced by some client. This is caused by the generic bug of not updating the Date header after cache validations.

Squid Now! Cache Now! Valid HTML 4.0! SourceForge
$Id: to-verify.html,v 1.13 2001/06/12 11:40:11 hno Exp $