Dan Wilga wrote: [...]
I have written to the Apache Developers' list, but the only suggestion I got was that the initial "Connection reset by peer" error is to be expected, but that mod_perl probably shouldn't be generating the pair of "[error]" level log messages.
I don't entirely buy this, since there was a behavior change when only Apache was upgraded (I kept the same mod_perl version when this started happening.) It also only happens when SSL is added to the mix.
However, if you do agree that mod_perl needs to be more tolerant of this particular condition then, in my opinion, not only should the error not be logged with the "[error]" severity, but the ErrorDocument 500 should also not be called.
Thanks for the detailed report, Dan. I'm not 100% sure it's a good idea to always ignore connection reset errors, since it may come in a different context (e.g. a registry script doing its own socket IO). But please give a try to this patch. I haven't tested it.
Index: ModPerl-Registry/lib/ModPerl/RegistryCooker.pm
===================================================================
RCS file: /home/cvs/modperl-2.0/ModPerl-Registry/lib/ModPerl/RegistryCooker.pm,v
retrieving revision 1.50
diff -u -r1.50 RegistryCooker.pm
--- ModPerl-Registry/lib/ModPerl/RegistryCooker.pm 27 Jun 2004 21:26:45 -0000 1.50
+++ ModPerl-Registry/lib/ModPerl/RegistryCooker.pm 1 Aug 2004 17:52:00 -0000
@@ -42,6 +42,7 @@
use File::Basename;
use Apache::Const -compile => qw(:common &OPT_EXECCGI); +use APR::Const -compile => qw(ECONNABORTED); use ModPerl::Const -compile => 'EXIT';
unless (defined $ModPerl::Registry::MarkLine) { @@ -724,9 +725,14 @@ # ModPerl::Util::exit() throws an exception object whose rc is # ModPerl::EXIT # (see modperl_perl_exit() and modperl_errsv() C functions) - if ($@ && !(ref $@ eq 'APR::Error' && $@ == ModPerl::EXIT)) { - $self->log_error($@); - return Apache::SERVER_ERROR; + if ($@) { + if ($@ == APR::ECONNABORTED) { + # silently ignore client connection abort + } + elsif (!(ref $@ eq 'APR::Error' && $@ == ModPerl::EXIT)) { + $self->log_error($@); + return Apache::SERVER_ERROR; + } } return Apache::OK; }
-- __________________________________________________________________ Stas Bekman JAm_pH ------> Just Another mod_perl Hacker http://stason.org/ mod_perl Guide ---> http://perl.apache.org mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com http://modperlbook.org http://apache.org http://ticketmaster.com
-- Report problems: http://perl.apache.org/bugs/ Mail list info: http://perl.apache.org/maillist/modperl.html List etiquette: http://perl.apache.org/maillist/email-etiquette.html