[squid-dev] Fix If-None-Match processing and related bug 4169
squid3 at treenet.co.nz
Tue Nov 29 21:23:25 UTC 2016
On 30/11/2016 1:47 a.m., Garri Djavadyan wrote:
> On Tue, 2016-11-29 at 14:51 +0500, Garri Djavadyan wrote:
>> Please review the attached patch prepared for r14958, it fixes the
>> None-Match processing (incorrect logging ) and the bug  report
>> 4169 depending on the incorrect (IMO) behavior.
>> An If-None-Match request for a non-matched (ETag) but cached object
>> should be processed as normal HIT.
>>  http://lists.squid-cache.org/pipermail/squid-users/2016-November/
>>  http://bugs.squid-cache.org/show_bug.cgi?id=4169
> I've attached second version of the patch. In the first version I
> removed strings (not related to the fix) which mark a request as non-
> IMS, because I thought the same request could not
> enter processConditional twice and the removed actions are redundant.
> Now I'm not sure about it.
The logic looks a bit funky and that is probably a side effect of
Checking this whole processConditional() sequence for compliance with
RFC 7232 and 7234 the rest of the logic seems to be fine except this case:
If the field-value is "*", or if the
field-value is a list of entity-tags and at least one of them matches
[ e->hasIfNoneMatchEtag(r) == false --> !N == true ]
the entity-tag of the selected stored response, a cache recipient
SHOULD generate a 304 (Not Modified) response (using the metadata of
the selected stored response) instead of sending that stored
so this is supposed to be a 304 response which is a HIT, perhapse with a
new 'INM' LogTag flag set to true.
More information about the squid-dev