factor out IE stupididy workaround

master
Joey Hess 2009-01-31 19:02:50 -05:00
parent 3be69a0fe4
commit b0361b8efd
2 changed files with 25 additions and 15 deletions

View File

@ -229,6 +229,20 @@ sub cgi_prefs ($$) {
showform($form, $buttons, $session, $q); showform($form, $buttons, $session, $q);
} }
sub cgi_custom_failure ($$) {
my $header=shift;
my $message=shift;
print $header;
print $message;
# Internet Explod^Hrer won't show custom 404 responses
# unless they're >= 512 bytes
print ' ' x 512;
exit;
}
sub check_banned ($$) { sub check_banned ($$) {
my $q=shift; my $q=shift;
my $session=shift; my $session=shift;
@ -236,14 +250,11 @@ sub check_banned ($$) {
my $name=$session->param("name"); my $name=$session->param("name");
if (defined $name) { if (defined $name) {
if (grep { $name eq $_ } @{$config{banned_users}}) { if (grep { $name eq $_ } @{$config{banned_users}}) {
print $q->header(-status => "403 Forbidden");
$session->delete(); $session->delete();
print gettext("You are banned.");
# Internet Explorer won't show custom 404 responses
# unless they're >= 512 bytes
print " " x 512;
cgi_savesession($session); cgi_savesession($session);
exit; cgi_custom_failure(
$q->header(-status => "403 Forbidden"),
gettext("You are banned."));
} }
} }
} }

View File

@ -44,15 +44,14 @@ sub cgi_goto ($;$) {
my $link = bestlink("", $page); my $link = bestlink("", $page);
if (! length $link) { if (! length $link) {
print $q->header(-status => "404 Not Found"); IkiWiki::cgi_custom_failure(
print IkiWiki::misctemplate(gettext("missing page"), $q->header(-status => "404 Not Found"),
"<p>". IkiWiki::misctemplate(gettext("missing page"),
sprintf(gettext("The page %s does not exist."), "<p>".
htmllink("", "", $page)). sprintf(gettext("The page %s does not exist."),
"</p>". htmllink("", "", $page)).
# Internet Explorer won't show custom 404 responses "</p>")
# unless they're >= 512 bytes )
(" " x 512));
} }
else { else {
IkiWiki::redirect($q, urlto($link, undef, 1)); IkiWiki::redirect($q, urlto($link, undef, 1));