Commit 286f7103 authored by Poul-Henning Kamp's avatar Poul-Henning Kamp

Make sure that

	set obj.ttl = 0s
means that the object is not hit again by actually using "-1" instead.

This works around the rounding error which otherwise causes the object
to be inside TTL for up to one second - epsilon.



git-svn-id: http://www.varnish-cache.org/svn/trunk@3388 d4fa192b-c00b-0410-8231-f00ffab90ce4
parent 8a6d318c
......@@ -320,9 +320,16 @@ VRT_l_obj_ttl(const struct sess *sp, double a)
CHECK_OBJ_NOTNULL(sp->obj, OBJECT_MAGIC); /* XXX */
WSP(sp, SLT_TTL, "%u VCL %.0f %.0f",
sp->obj->xid, a, sp->t_req);
if (a < 0)
a = 0;
sp->obj->ttl = sp->t_req + a;
/*
* If people set obj.ttl = 0s, they don't expect it to be cacheable
* any longer, but it will still be for up to 1s - epsilon because
* of the rounding to seconds.
* We special case and make sure that rounding does not surprise.
*/
if (a <= 0)
sp->obj->ttl = sp->t_req - 1;
else
sp->obj->ttl = sp->t_req + a;
EXP_Rearm(sp->obj);
}
......
# $Id$
test "Test that obj.ttl = 0s prevents subsequent hits"
server s1 {
rxreq
expect req.url == "/foo"
txresp -status 200 -body "1"
rxreq
expect req.url == "/foo"
txresp -status 200 -body "22"
} -start
varnish v1 -vcl+backend {
sub vcl_hit {
set obj.ttl = 0s;
restart;
}
} -start
client c1 {
txreq -url "/foo"
rxresp
expect resp.status == 200
expect resp.bodylen == 1
txreq -url "/foo"
rxresp
expect resp.status == 200
expect resp.bodylen == 2
} -run
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment