From: Joey Hess Date: Tue, 8 Jul 2008 15:25:30 +0000 (-0400) Subject: another try at dealing with CGI.pm problem X-Git-Tag: 2.53~46 X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/commitdiff_plain/66f35e30dcea03c631a293e2341771277543b4ae another try at dealing with CGI.pm problem open the temp file if all attempts to get a fd fail --- 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: