* poll: This plugin turns out to have edited pages w/o doing any locking.

Oops. Convert it from a cgi to a sessioncgi hook, which will work
  much better.
master
Joey Hess 2008-02-03 00:26:00 -05:00
parent 80915c830a
commit 9f60272831
2 changed files with 6 additions and 3 deletions

View File

@ -7,7 +7,7 @@ use IkiWiki 2.00;
sub import { #{{{
hook(type => "preprocess", id => "poll", call => \&preprocess);
hook(type => "cgi", id => "poll", call => \&cgi);
hook(type => "sessioncgi", id => "poll", call => \&sessioncgi);
} # }}}
sub yesno ($) { #{{{
@ -74,8 +74,9 @@ sub preprocess (@) { #{{{
return "<div class=poll>$ret</div>";
} # }}}
sub cgi ($) { #{{{
sub sessioncgi ($) { #{{{
my $cgi=shift;
my $session=shift;
if (defined $cgi->param('do') && $cgi->param('do') eq "poll") {
my $choice=$cgi->param('choice');
if (! defined $choice) {
@ -92,7 +93,6 @@ sub cgi ($) { #{{{
# Did they vote before? If so, let them change their vote,
# and check for dups.
my $session=IkiWiki::cgi_getsession();
my $choice_param="poll_choice_${page}_$num";
my $oldchoice=$session->param($choice_param);
if (defined $oldchoice && $oldchoice eq $choice) {

3
debian/changelog vendored
View File

@ -11,6 +11,9 @@ ikiwiki (2.31) UNRELEASED; urgency=low
* cgi hooks are now run before ikiwiki state is loaded.
* This allows locking the wiki before loading state, which avoids some
tricky locking code when saving a web edit.
* poll: This plugin turns out to have edited pages w/o doing any locking.
Oops. Convert it from a cgi to a sessioncgi hook, which will work
much better.
-- Joey Hess <joeyh@debian.org> Sat, 02 Feb 2008 23:36:31 -0500