summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Hess <joey@kodama.kitenet.net>2008-07-08 11:25:30 -0400
committerJoey Hess <joey@kodama.kitenet.net>2008-07-08 11:25:30 -0400
commit66f35e30dcea03c631a293e2341771277543b4ae (patch)
tree3ef05986a53e708e401e3f4af30d0e4a5da9140a
parent5ccd0cb518f663872c93dc376f756bf71996034d (diff)
another try at dealing with CGI.pm problem
open the temp file if all attempts to get a fd fail
-rw-r--r--IkiWiki/Plugin/attachment.pm8
-rw-r--r--doc/bugs/attachment:_failed_to_get_filehandle.mdwn9
2 files changed, 16 insertions, 1 deletions
diff --git a/IkiWiki/Plugin/attachment.pm b/IkiWiki/Plugin/attachment.pm
index f4f64b46a..ed1cd61fe 100644
--- a/IkiWiki/Plugin/attachment.pm
+++ b/IkiWiki/Plugin/attachment.pm
@@ -88,6 +88,10 @@ sub formbuilder (@) { #{{{
# of the temp file that CGI writes the upload to.
my $tempfile=$q->tmpFileName($filename);
+ if (! defined $tempfile) {
+ error("failed to determine temp filename");
+ }
+
$filename=IkiWiki::titlepage(
IkiWiki::possibly_foolish_untaint(
attachment_location($form->field('page')).
@@ -136,7 +140,9 @@ sub formbuilder (@) { #{{{
# needed by old CGI versions
$fh=$q->param('attachment');
if (! defined $fh || ! ref $fh) {
- error("failed to get filehandle");
+ # even that doesn't always work,
+ # fall back to opening the tempfile
+ open($fh, "<", $tempfile) || error("failed to open $tempfile: $!");
}
}
binmode($fh);
diff --git a/doc/bugs/attachment:_failed_to_get_filehandle.mdwn b/doc/bugs/attachment:_failed_to_get_filehandle.mdwn
index e5d4756fc..906d01e24 100644
--- a/doc/bugs/attachment:_failed_to_get_filehandle.mdwn
+++ b/doc/bugs/attachment:_failed_to_get_filehandle.mdwn
@@ -54,6 +54,15 @@ the error message like below:
>>>>>> --[[Paweł|ptecza]]
+>>>>>>> Well then, your CGI.pm is somehow not behaving as its documentation
+>>>>>>> describes, in two ways:
+>>>>>>> 1. `upload()` is not returning a reference to the filehandle
+>>>>>>> 2. The filename returned by `param("attachment")` is not also
+>>>>>>> a file handle.
+>>>>>>> That seems very broken. I can try to work around it some more
+>>>>>>> though. I've checked in a second try at dealing with things, can
+>>>>>>> you try it? --[[Joey]]
+
The same message I can see in the Apache log file. There is also
following warning: