Jeff? Could you please try that patch that I've sent earlier? I think it's right, but I was still not very successful at reproducing your problem on the HTTP level. Thanks.

Stas Bekman wrote:
Stas Bekman wrote:

Jeff Ambrosino wrote:

Ok, this is going to be tough for me to test because I'm still on RC4,
so it's not yet converted to the new Apache2 naming.  I'll still try
to make/test the svn snapshot, though (which also gives me a good
reason to get more familiar with subversion.)  I'll email what I find
out.

thanks Stas!



OK, may be just try comparing to:

  $@ == APR::Const::ECONNABORTED or $@ == APR::Const::ECONNRESET

The new subs just supposed to work on more platforms, where other similar codes may be sent by the system.

You can still play with the test t/protocol/TestProtocol/echo_nonblock.pm from RC4.

but looking again at your report, I can see that the issue is elsewhere.

I believe it's coming from src/modules/perl/modperl_filter.c:

    if (filter->mode == MP_INPUT_FILTER_MODE) {
      ...
    }
    else {
        MP_RUN_CROAK(modperl_output_filter_flush(filter),
                     "Apache2::Filter");
    }

is that it? if you change the "Apache2::Filter" string (drop the 2 in your case) to something else?


If this is the case, please try this patch, I hope it applies to RC4 (I've dropped '2' for you)

Index: src/modules/perl/modperl_filter.c
===================================================================
--- src/modules/perl/modperl_filter.c   (revision 169708)
+++ src/modules/perl/modperl_filter.c   (working copy)
@@ -535,11 +535,15 @@
             filter->bb_in = NULL;
         }
         MP_RUN_CROAK(modperl_input_filter_flush(filter),
-                     "Apache::Filter");
+                     "Apache::Filter internal flush");
     }
     else {
-        MP_RUN_CROAK(modperl_output_filter_flush(filter),
-                     "Apache::Filter");
+        apr_status_t rc = modperl_output_filter_flush(filter);
+        if (!(rc == APR_SUCCESS            ||
+              APR_STATUS_IS_ECONNRESET(rc) ||
+              APR_STATUS_IS_ECONNABORTED(rc))) {
+            modperl_croak(aTHX_ rc, "Apache::Filter internal flush");
+        }
     }

     MP_FILTER_RESTORE_ERRSV(errsv);

I need to figure out how to write a test for this, so I can decide what's the right way to handle this.



--
__________________________________________________________________
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

Reply via email to