You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by jo...@apache.org on 2012/07/05 17:33:19 UTC
svn commit: r1357685 - in /httpd/httpd/trunk: CHANGES
modules/filters/mod_ext_filter.c
Author: jorton
Date: Thu Jul 5 15:33:18 2012
New Revision: 1357685
URL: http://svn.apache.org/viewvc?rev=1357685&view=rev
Log:
* modules/filters/mod_ext_filter.c (ef_unified_filter): Set hit_eos
flag on hitting EOS.
(ef_input_filter): Give back EOS if filter is invoked after hitting
EOS, rather than attempting (and failing) to read from the closed
pipe to the child.
Modified:
httpd/httpd/trunk/CHANGES
httpd/httpd/trunk/modules/filters/mod_ext_filter.c
Modified: httpd/httpd/trunk/CHANGES
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/CHANGES?rev=1357685&r1=1357684&r2=1357685&view=diff
==============================================================================
--- httpd/httpd/trunk/CHANGES [utf-8] (original)
+++ httpd/httpd/trunk/CHANGES [utf-8] Thu Jul 5 15:33:18 2012
@@ -1,6 +1,9 @@
-*- coding: utf-8 -*-
Changes with Apache 2.5.0
+ *) mod_ext_filter: Fix error_log spam when input filters are configured.
+ [Joe Orton]
+
*) mod_rewrite: Add "AllowAnyURI" option. PR 52774. [Joe Orton]
*) mod_ssl: Add RFC 5878 support. [Ben Laurie]
Modified: httpd/httpd/trunk/modules/filters/mod_ext_filter.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/filters/mod_ext_filter.c?rev=1357685&r1=1357684&r2=1357685&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/filters/mod_ext_filter.c (original)
+++ httpd/httpd/trunk/modules/filters/mod_ext_filter.c Thu Jul 5 15:33:18 2012
@@ -66,7 +66,7 @@ typedef struct ef_ctx_t {
apr_procattr_t *procattr;
ef_dir_t *dc;
ef_filter_t *filter;
- int noop;
+ int noop, hit_eos;
#if APR_FILES_AS_SOCKETS
apr_pollset_t *pollset;
#endif
@@ -827,6 +827,7 @@ static int ef_unified_filter(ap_filter_t
if (eos) {
b = apr_bucket_eos_create(c->bucket_alloc);
APR_BRIGADE_INSERT_TAIL(bb, b);
+ ctx->hit_eos = 1;
}
return APR_SUCCESS;
@@ -910,6 +911,14 @@ static apr_status_t ef_input_filter(ap_f
ctx = f->ctx;
}
+ if (ctx->hit_eos) {
+ /* Match behaviour of HTTP_IN if filter is re-invoked after
+ * hitting EOS: give back another EOS. */
+ apr_bucket *e = apr_bucket_eos_create(f->c->bucket_alloc);
+ APR_BRIGADE_INSERT_TAIL(bb, e);
+ return APR_SUCCESS;
+ }
+
if (ctx->noop) {
ap_remove_input_filter(f);
return ap_get_brigade(f->next, bb, mode, block, readbytes);