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 */