Commit d9f7e92c authored by Federico G. Schwindt's avatar Federico G. Schwindt

Merge stale-while-revalidate handling into RFC2616_Ttl

Log the grace period as part of the SLT_TTL VSL tag.
parent 644be66f
......@@ -1085,7 +1085,6 @@ unsigned RFC2616_Req_Gzip(const struct http *);
int RFC2616_Do_Cond(const struct req *sp);
void RFC2616_Weaken_Etag(struct http *hp);
void RFC2616_Vary_AE(struct http *hp);
void RFC5861_Stale(const struct busyobj *);
/* stevedore.c */
int STV_NewObject(struct objcore *, struct worker *,
......
......@@ -366,8 +366,6 @@ vbf_stp_startfetch(struct worker *wrk, struct busyobj *bo)
EXP_Clr(&bo->fetch_objcore->exp);
RFC2616_Ttl(bo, now);
RFC5861_Stale(bo);
/* private objects have negative TTL */
if (bo->fetch_objcore->flags & OC_F_PRIVATE)
bo->fetch_objcore->exp.ttl = -1.;
......
......@@ -173,10 +173,22 @@ RFC2616_Ttl(struct busyobj *bo, double now)
}
/* calculated TTL, Our time, Date, Expires, max-age, age */
/*
* RFC5861 outlines a way to control the use of stale responses.
* We use this to initialize the grace period.
*/
if (expp->ttl >= 0 && http_GetHdrField(hp, H_Cache_Control,
"stale-while-revalidate", &p) && p != NULL) {
if (*p == '-')
expp->grace = 0;
else
expp->grace = strtoul(p, NULL, 0);
}
VSLb(bo->vsl, SLT_TTL,
"RFC %.0f %.0f %.0f %.0f %.0f %.0f %.0f %u",
expp->ttl, -1., -1., now,
expp->ttl, expp->grace, -1., now,
expp->t_origin, h_date, h_expires, max_age);
}
......@@ -275,35 +287,3 @@ RFC2616_Vary_AE(struct http *hp)
http_SetHeader(hp, "Vary: Accept-Encoding");
}
}
/*
* RFC5861 outlines a way to control the use of stale responses.
* We use this to initialize the grace period.
*/
void
RFC5861_Stale(const struct busyobj *bo)
{
const char *p;
const struct http *hp;
struct exp *expp;
expp = &bo->fetch_objcore->exp;
/*
* If we are not meant to cache this ignore any potential
* stale-while-revalidate values.
*/
if (expp->ttl < 0.)
return;
hp = bo->beresp;
if (http_GetHdrField(hp, H_Cache_Control,
"stale-while-revalidate", &p) && p != NULL) {
if (*p == '-')
expp->grace = 0;
else
expp->grace = strtoul(p, NULL, 0);
}
}
......@@ -211,7 +211,7 @@ SLTM(TTL, 0, "TTL set on object",
"\n"
"The last four fields are only present in \"RFC\" headers.\n\n"
"Examples::\n\n"
"\tRFC 60 -1 -1 1312966109 1312966109 1312966109 0 60\n"
"\tRFC 60 10 -1 1312966109 1312966109 1312966109 0 60\n"
"\tVCL 120 10 0 1312966111\n"
"\n"
)
......
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