Commit 4ad8547a authored by Geoff Simmons's avatar Geoff Simmons

Bugfix setting the timer interval from ttl.

And test reading updated file contents after the interval elapses.
parent aef58778
......@@ -28,3 +28,33 @@ client c1 {
expect resp.status == 200
expect resp.http.Get == "foo bar baz quux"
} -run
varnish v1 -vcl+backend {
import ${vmod_file};
backend b { .host = "${bad_ip}"; }
sub vcl_init {
new rdr = file.reader("${tmpdir}/file", ttl=0.1s);
}
sub vcl_recv {
return (synth(200));
}
sub vcl_synth {
set resp.http.Get = rdr.get();
return (deliver);
}
}
client c1 -run
shell {echo -n "quux baz bar foo" > ${tmpdir}/file}
delay .1
client c1 {
txreq
rxresp
expect resp.status == 200
expect resp.http.Get == "quux baz bar foo"
} -run
......@@ -258,9 +258,9 @@ vmod_reader__init(VRT_CTX, struct VPFX(file_reader) **rdrp,
timerspec.it_value.tv_sec = 0;
timerspec.it_value.tv_nsec = 1;
timerspec.it_interval.tv_sec = (time_t)ttl;
assert(timerspec.it_interval.tv_sec - ttl < 1.);
assert(ttl - timerspec.it_interval.tv_sec < 1.);
timerspec.it_interval.tv_nsec
= (long)(1e9 * (timerspec.it_interval.tv_sec - ttl));
= (long)(1e9 * (ttl - timerspec.it_interval.tv_sec));
errno = 0;
if (timer_settime(timerid, 0, &timerspec, NULL) != 0) {
......
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