On 10/29/2008 02:32 PM, [EMAIL PROTECTED] wrote:
> Author: jim
> Date: Wed Oct 29 06:32:58 2008
> New Revision: 708902
>
> URL: http://svn.apache.org/viewvc?rev=708902&view=rev
> Log:
> Avoid time traveling :)
>
> Modified:
> httpd/httpd/trunk/modules/metadata/mod_expires.c
>
> Modified: httpd/httpd/trunk/modules/metadata/mod_expires.c
> URL:
> http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/metadata/mod_expires.c?rev=708902&r1=708901&r2=708902&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/modules/metadata/mod_expires.c (original)
> +++ httpd/httpd/trunk/modules/metadata/mod_expires.c Wed Oct 29 06:32:58 2008
> @@ -430,6 +430,9 @@
> }
>
> expires = base + additional;
> + if (expires < r->request_time) {
> + expires = r->request_time;
> + }
> apr_table_mergen(t, "Cache-Control",
> apr_psprintf(r->pool, "max-age=%" APR_TIME_T_FMT,
> apr_time_sec(expires - r->request_time)));
>
This causes failures in the perl framework:
t/modules/expires.t 92 15 16.30% 4 10 14 17-18 22 29-30 34-
35 38 42 46 48 50
But IMHO the code is now correct after the patch and the tests are wrong. The
following
patch makes the tests pass again:
Index: t/modules/expires.t
===================================================================
--- t/modules/expires.t (Revision 707830)
+++ t/modules/expires.t (Arbeitskopie)
@@ -231,6 +231,13 @@
if ($exp_conf =~ /^([A|M])(\d+)$/) {
$exp_type = $1;
$expected = $2;
+ ## With modification date as base expire times can be in the past
+ ## Correct behaviour for the server in this case is to set expires
+ ## time equal to access time.
+ if (($exp_type eq 'M')
+ && ($headers{access} > $headers{modified} + $expected)) {
+ $expected = $headers{access} - $headers{modified};
+ }
} else {
print STDERR "\n\ndoom: $exp_conf\n\n";
return 0;
Comments?
Regards
RĂ¼diger