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);
}
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 ($$) {
my $q=shift;
my $session=shift;
@ -236,14 +250,11 @@ sub check_banned ($$) {
my $name=$session->param("name");
if (defined $name) {
if (grep { $name eq $_ } @{$config{banned_users}}) {
print $q->header(-status => "403 Forbidden");
$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);
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);
if (! length $link) {
print $q->header(-status => "404 Not Found");
print IkiWiki::misctemplate(gettext("missing page"),
"<p>".
sprintf(gettext("The page %s does not exist."),
htmllink("", "", $page)).
"</p>".
# Internet Explorer won't show custom 404 responses
# unless they're >= 512 bytes
(" " x 512));
IkiWiki::cgi_custom_failure(
$q->header(-status => "404 Not Found"),
IkiWiki::misctemplate(gettext("missing page"),
"<p>".
sprintf(gettext("The page %s does not exist."),
htmllink("", "", $page)).
"</p>")
)
}
else {
IkiWiki::redirect($q, urlto($link, undef, 1));