Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
Please login to access the resource
openSUSE:11.4:Update
squid.import5580
12491.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 12491.patch of Package squid.import5580
--------------------- PatchSet 12491 Date: 2009/06/25 22:55:50 Author: hno Branch: SQUID_2_7 Tag: (none) Log: Author: Mark Nottingham <mnot@pobox.com> MFC: Bug #2647: Reprioritise override-* and stale-while-revalidate In the "At this point the response is stale" section of refreshCheck(), Squid does the stale-while-revalidate and stale-if-error checks before the checks for override-expire and override-lastmod. In some circumstances, this can cause undesireable side effects. For example, a response with an invalid Expires header, an Expires header in the past, or Cache-Control: max-age=0, in combination with refresh_pattern . 1 100% 1 override-expire stale-while-revalidate=15 will, once the one minute window passes, go into a state where requests are always served as TCP_STALE_HIT (with a corresponding TCP_ASYNC_MISS), as long as a request comes in the 15 second stale-while-revalidate window and at least once every 15 seconds thereafter. The fix is to place the override-* checks before the stale-while-revalidate logic, so that an already-stale response has the overridden freshness applied before the stale checks happen. Members: src/refresh.c:1.67->1.67.2.1 Index: squid/src/refresh.c =================================================================== RCS file: /cvsroot/squid/squid/src/refresh.c,v retrieving revision 1.67 retrieving revision 1.67.2.1 diff -u -r1.67 -r1.67.2.1 --- squid/src/refresh.c 13 Dec 2007 01:25:34 -0000 1.67 +++ squid/src/refresh.c 25 Jun 2009 22:55:50 -0000 1.67.2.1 @@ -1,6 +1,6 @@ /* - * $Id: refresh.c,v 1.67 2007/12/13 01:25:34 hno Exp $ + * $Id: refresh.c,v 1.67.2.1 2009/06/25 22:55:50 hno Exp $ * * DEBUG: section 22 Refresh Calculation * AUTHOR: Harvest Derived @@ -334,6 +334,16 @@ * At this point the response is stale, unless one of * the override options kicks in. */ +#if HTTP_VIOLATIONS + if (sf.expires && R->flags.override_expire && age < R->min) { + debug(22, 3) ("refreshCheck: NO: age < min && override-expire\n"); + return FRESH_OVERRIDE_EXPIRES; + } + if (sf.lmfactor && R->flags.override_lastmod && age < R->min) { + debug(22, 3) ("refreshCheck: NO: age < min && override-lastmod\n"); + return FRESH_OVERRIDE_LASTMOD; + } +#endif if (entry->mem_obj) { int stale_while_revalidate = -1; if (entry->mem_obj->reply && entry->mem_obj->reply->cache_control && EBIT_TEST(entry->mem_obj->reply->cache_control->mask, CC_STALE_WHILE_REVALIDATE)) @@ -357,26 +367,12 @@ if (delta < 0 && staleness + delta < 0) { return STALE_WITHIN_DELTA; } - if (sf.expires) { -#if HTTP_VIOLATIONS - if (R->flags.override_expire && age < R->min) { - debug(22, 3) ("refreshCheck: NO: age < min && override-expire\n"); - return FRESH_OVERRIDE_EXPIRES; - } -#endif + if (sf.expires) return STALE_EXPIRES; - } if (sf.max) return STALE_MAX_RULE; - if (sf.lmfactor) { -#if HTTP_VIOLATIONS - if (R->flags.override_lastmod && age < R->min) { - debug(22, 3) ("refreshCheck: NO: age < min && override-lastmod\n"); - return FRESH_OVERRIDE_LASTMOD; - } -#endif + if (sf.lmfactor) return STALE_LMFACTOR_RULE; - } return STALE_DEFAULT; }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor