]> err.no Git - varnish/commitdiff
A temporary hack to deal with very old Date: headers until we figure
authorphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Mon, 26 Jun 2006 19:24:03 +0000 (19:24 +0000)
committerphk <phk@d4fa192b-c00b-0410-8231-f00ffab90ce4>
Mon, 26 Jun 2006 19:24:03 +0000 (19:24 +0000)
out what's going on.

git-svn-id: svn+ssh://projects.linpro.no/svn/varnish/trunk@241 d4fa192b-c00b-0410-8231-f00ffab90ce4

varnish-cache/bin/varnishd/rfc2616.c

index 1ddc24fbb4fda368a9ac46563e3544b7cd0a6bff..7dcf08e81bcab5f3b970a479362837971ad68ddd 100644 (file)
@@ -42,6 +42,7 @@ RFC2616_Ttl(struct http *hp, time_t t_req, time_t t_resp)
        time_t apparent_age = 0, corrected_received_age;
        time_t response_delay, corrected_initial_age;
        time_t max_age = -1, ttl;
+       time_t fudge;
        char *p;
 
        if (http_GetHdrField(hp, "Cache-Control", "max-age", &p))
@@ -50,6 +51,12 @@ RFC2616_Ttl(struct http *hp, time_t t_req, time_t t_resp)
        if (http_GetHdr(hp, "Date", &p))
                h_date = TIM_parse(p);
 
+       if (h_date + 3600 < t_resp) {
+               fudge = t_resp - h_date;
+               h_date += fudge;
+       } else
+               fudge = 0;
+
        if (h_date < t_resp)
                apparent_age = t_resp - h_date;
 
@@ -64,8 +71,9 @@ RFC2616_Ttl(struct http *hp, time_t t_req, time_t t_resp)
        response_delay = t_resp - t_req;
        corrected_initial_age = corrected_received_age + response_delay;
 
-       if (http_GetHdr(hp, "Expires", &p))
-               h_expires = TIM_parse(p);
+       if (http_GetHdr(hp, "Expires", &p)) {
+               h_expires = TIM_parse(p) + fudge;
+       }
 
        printf("Date: %d\n", h_date);
        printf("Recv: %d\n", t_resp);