]> git.deb.at Git - deb/packages.git/commitdiff
Packages::Dispatcher: Fix date logics again
authorFrank Lichtenheld <frank@lichtenheld.de>
Fri, 8 Aug 2008 19:44:55 +0000 (16:44 -0300)
committerFrank Lichtenheld <frank@lichtenheld.de>
Tue, 19 Aug 2008 21:55:16 +0000 (23:55 +0200)
* Due to a inverted test Last-Modified was always set to "now"
* Do not allow expires to be in the past

lib/Packages/Dispatcher.pm

index e8f0679434c67c55cb41a4f4494f03c09f2e6763..d8b750c18d784604f2d37d461b16e50c543ede97 100755 (executable)
@@ -94,9 +94,11 @@ sub do_dispatch {
     &Packages::DB::init();
     my $last_modified = $Packages::DB::db_read_time;
     my $now = time;
+    my $expires = $last_modified + (12*3600);
+    $expires = $now + 3600 if $expires < $now;
     # allow some fudge, since the db mod time is not the end of
     # the cron job
-    $last_modified = $now if $last_modified - $now < 3600; 
+    $last_modified = $now if $now - $last_modified < 3600;
 
     if ($input->http('If-Modified-Since') and
        (my $modtime = str2time($input->http('If-Modified-Since'), 'UTC'))) {
@@ -351,7 +353,7 @@ sub do_dispatch {
                             -last_modified => strftime("%a, %d %b %Y %T %z",
                                                        localtime($last_modified)),
                             -expires => strftime("%a, %d %b %Y %T %z",
-                                                 localtime($last_modified + (12*3600))),
+                                                 localtime($expires)),
                             );
        #use Data::Dumper;
        #print '<pre>'.Dumper(\%ENV, \%page_content, get_all_messages()).'</pre>';