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 ----------- > <form method="post" action="test_upload.cgi" enctype="multipart/form- > data" name="student_info"> <input type="text" name="good" /> <input > type="file" name="upload_photo" /> <input type="submit"> </form> > ------------- 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;