Search squid archive

If-Unmodified-Since implementation question

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I'm trying to implement the If-Unmodified-Since (IUMS) capability in Squid 2.x.

When a client IUMS request comes, I raise a new request flag iums,
store the iums time, and send an IMS request to the origin.  When the
origin response comes back, I modify the store entry memory objectâs
reply status according to the IUMS time logic in both
httpProcessReplyHeader() and clientHandleIMSReply().

This works either when the IUMS precondition is satisfied (then I send
200 to client, instead of 304 typically) or for the cache *hit only*
when the IUMS precondition is unsatisfied (then I send 412 to client,
instead of 200 typically).

However, when the IUMS precondition is unsatisfied upon cache *miss*,
the origin's 200 response is still being sent to client, even after I
modify the store entry memory objectâs reply status to 412 in
httpProcessReplyHeader().  I cannot figure out how and when the status
is being restored back to 200.

Iâve set gdb data-watch breakpoints over the store entry memory
objectâs reply status.  But then, later during the execution, gdb
reports watchpoint expression error: bad address.

Iâm stuck now, and would really appreciate any help.  Thanks.


On Tue, Jan 11, 2011 at 2:38 PM, Guy Bashkansky <guybas@xxxxxxxxx> wrote:
>
> I have to modify the behavior of a customized version of Squid 2.4
> STABLE6 code, either by configuration or by coding. ÂCurrently I can
> not switch to any other Squid version, because of the customizations.
>
>
> Problem description:
>
> - When a client sends a byte-range request with an If-Unmodified-Since
> header AND the object in Squid's cache is stale, then this Squid
> version generates a request to origin with both IUMS and IMS headers,
> which is conflicting and undefined by RFC2616. ÂThe origin throws an
> error.
>
>
> Proposed solution:
>
> - On an IMS check for a content that was requested with a UIMS header,
> Squid should only insert the IMS header, not the IUMS header. (If
> only the IUMS header was added, then the origin would return origin
> content unnecessarily, since it hasn't changed from the the cached
> version.)
>
> - Once the origin check is complete, then Squid cache should compute
> IUMS calculations as defined in RFC2616, returning possibly a 206
> Partial or 412 precondition failed.
> http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
>
>
> Questions:
>
> - Is there any possibility to facilitate such behavior using Squid 2.4
> STABLE6 configuration?
>
> - If not, then where in the code should I start to look to make the
> necessary code change, and approximately how?
>
> - I could not find any notion of If-Unmodified-Since in the Squid 2.4
> STABLE6 code. ÂWhat's the best way to handle this?



[Index of Archives]     [Linux Audio Users]     [Samba]     [Big List of Linux Books]     [Linux USB]     [Yosemite News]

  Powered by Linux