39 lines
1.0 KiB
Diff
39 lines
1.0 KiB
Diff
# ./pullrev.sh 1357685
|
|
|
|
http://svn.apache.org/viewvc?view=revision&revision=1357685
|
|
|
|
--- httpd-2.4.2/modules/filters/mod_ext_filter.c
|
|
+++ httpd-2.4.2/modules/filters/mod_ext_filter.c
|
|
@@ -66,7 +66,7 @@
|
|
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 @@
|
|
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 @@
|
|
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);
|