Author: stas Date: Tue Jun 28 02:14:53 2005 New Revision: 202146 URL: http://svn.apache.org/viewcvs?rev=202146&view=rev Log: filter flushing now doesn't croak on connection reset (ECONNRESET/ECONNABORTED), but just logs the event on the 'info' level.
Modified: perl/modperl/trunk/Changes perl/modperl/trunk/src/modules/perl/modperl_filter.c Modified: perl/modperl/trunk/Changes URL: http://svn.apache.org/viewcvs/perl/modperl/trunk/Changes?rev=202146&r1=202145&r2=202146&view=diff ============================================================================== --- perl/modperl/trunk/Changes (original) +++ perl/modperl/trunk/Changes Tue Jun 28 02:14:53 2005 @@ -12,6 +12,10 @@ =item 2.0.2-dev +filter flushing now doesn't croak on connection reset +(ECONNRESET/ECONNABORTED), but just logs the event on the 'info' +level. [Stas] + RPM Friendly builds : [Gozer] - make dist tarballs can now be built directly into RPMs with rpmbuild - Added a new target 'make rpm' to directly build rpms from a checkout Modified: perl/modperl/trunk/src/modules/perl/modperl_filter.c URL: http://svn.apache.org/viewcvs/perl/modperl/trunk/src/modules/perl/modperl_filter.c?rev=202146&r1=202145&r2=202146&view=diff ============================================================================== --- perl/modperl/trunk/src/modules/perl/modperl_filter.c (original) +++ perl/modperl/trunk/src/modules/perl/modperl_filter.c Tue Jun 28 02:14:53 2005 @@ -470,6 +470,23 @@ } +#define MP_RUN_CROAK_RESET_OK(func) \ + { \ + apr_status_t rc = func(filter); \ + if (rc != APR_SUCCESS) { \ + if (APR_STATUS_IS_ECONNRESET(rc) || \ + APR_STATUS_IS_ECONNABORTED(rc)) { \ + ap_log_error(APLOG_MARK, APLOG_INFO, 0, s, \ + "Apache2::Filter internal flush got: %s", \ + modperl_error_strerror(aTHX_ rc)); \ + } \ + else { \ + modperl_croak(aTHX_ rc, \ + "Apache2::Filter internal flush"); \ + } \ + } \ + } + int modperl_run_filter(modperl_filter_t *filter) { AV *args = Nullav; @@ -534,12 +551,10 @@ apr_brigade_destroy(filter->bb_in); filter->bb_in = NULL; } - MP_RUN_CROAK(modperl_input_filter_flush(filter), - "Apache2::Filter"); + MP_RUN_CROAK_RESET_OK(modperl_input_filter_flush); } else { - MP_RUN_CROAK(modperl_output_filter_flush(filter), - "Apache2::Filter"); + MP_RUN_CROAK_RESET_OK(modperl_output_filter_flush); } MP_FILTER_RESTORE_ERRSV(errsv); @@ -551,7 +566,6 @@ return status; } - /* unrolled APR_BRIGADE_FOREACH loop */