* Fix an aggregate plugin expiry bug. Over time, it's possible for the same

page name to be expired and reused for several distinct guids. When this
  happened, the expiry code counted each past guid that had used that page
  name as a currently existing page, and thus expired too many pages.
master
Joey Hess 2007-10-30 22:50:44 -04:00
parent f0dab430bd
commit 5cbd86235e
2 changed files with 8 additions and 2 deletions

View File

@ -220,9 +220,11 @@ sub expire () { #{{{
foreach my $feed (values %feeds) {
next unless $feed->{expireage} || $feed->{expirecount};
my $count=0;
my %seen;
foreach my $item (sort { $IkiWiki::pagectime{$b->{page}} <=> $IkiWiki::pagectime{$a->{page}} }
grep { exists $_->{page} && $_->{feed} eq $feed->{name} && $IkiWiki::pagectime{$_->{page}} }
grep { exists $_->{page} && ! exists $seen{$_->{page}} && $_->{feed} eq $feed->{name} && $IkiWiki::pagectime{$_->{page}} }
values %guids) {
$seen{$item}=1;
if ($feed->{expireage}) {
my $days_old = (time - $IkiWiki::pagectime{$item->{page}}) / 60 / 60 / 24;
if ($days_old > $feed->{expireage}) {

6
debian/changelog vendored
View File

@ -1,8 +1,12 @@
ikiwiki (2.12) UNRELEASED; urgency=low
* Fix some issues with toggles in preview mode.
* Fix an aggregate plugin expiry bug. Over time, it's possible for the same
page name to be expired and reused for several distinct guids. When this
happened, the expiry code counted each past guid that had used that page
name as a currently existing page, and thus expired too many pages.
-- Joey Hess <joeyh@debian.org> Mon, 29 Oct 2007 17:15:04 -0400
-- Joey Hess <joeyh@debian.org> Tue, 30 Oct 2007 22:47:36 -0400
ikiwiki (2.11) unstable; urgency=low