On Wednesday 09 January 2008 10:28:39 pm Mark Alway wrote:

> (did I get this sent to the list or just back to Malcolm...I don't see
> the list address in the subscribe confirmation?)


Just to me. cc'd back to the list

> I'm having a very similar problem. My setup: Apache/2.2.6 (Unix)
> mod_ssl/2.2.6 t/mixed mod_apreq2-20051231/2.6.0 mod_perl/2.0.3 Perl/
> v5.8.6
>
> I'm using a very simple Upload script for testing and every 4th or 5th
> upload from a Safari browser the server just hangs. After the 60
> seconds specified as the timeout in my Apache config the error_log
> reports:
>
> [Wed Jan 09 18:49:09 2008] [error] [client 192.168.1.6] (70007)The
> timeout specified has expired: ap_get_brigade failed during prefetch,
> referer: http://192.168.1.2/test_upload.html
> [Wed Jan 09 18:49:09 2008] [error] Internal apreq error


What's your Timeout set to in the apache config?

> If I was to click on a different link or stop the browser while
> waiting for the server I get this in the error log:
>
> [error] End of file found


If you stop the browser whilst it's uploading, then I'd expect that
behaviour - you've interupted the POST.


> When I used the $io->read() function versus <$io> the message reads:
>
> [error] Apache2::RequestIO::read: (70014) End of file found at (eval
> 23) line 5
>
> I can reproduce this but only with Safari browsers. Firefox seems
> immune. I ran a TCP dump of the process with a 43 byte uploaded file
> and couldn't see any noticeable differences between the way the
> browsers posted. Using <$io> seems to be better than $io->read() but
> both still exhibit the problem.


Can you reproduce it with the 43 byte file, or was that just for comparing the
dumps? I'm only running into this after around a few hundred Kb, and then
it's dependent on line quality (thus doesn't happen during on-site testing).


>
> Below is my HTML form file and Mod_Perl script. Both incredibly
> simple, but causing a major headache:
>
> --------- HTML -----------
>
> type="file" name="upload_photo" />
> ------------- ModPerl Code --------------
> use strict;
> use warnings;
> use Apache2::RequestUtil;
> use Apache2::Request;
> use Apache2::Upload;
>
> my $r = Apache2::RequestUtil->request();
>
> my $req = Apache2::Request->new($r);
>
> # Get the photo that was uploaded
>
> my $upload = $req->upload('upload_photo');
>
> my $size = $upload->size();
>
> open(WRITE, ">/usr/local/apache2/html/0001.jpg") or die("Can't open
> 0001.jpg for write $!");
>
> my $io = $upload->io;
> print WRITE while <$io>;
>
> close(WRITE);
>
> print "Content-type: text/html\n\n";
>
> print "Success";
>
> exit;