summaryrefslogtreecommitdiff
path: root/include/util_filter.h
diff options
context:
space:
mode:
authorYann Ylavic <ylavic@apache.org>2018-07-11 13:03:35 +0000
committerYann Ylavic <ylavic@apache.org>2018-07-11 13:03:35 +0000
commitabab1d4cc18662bda14bc06cccdbeb579473add1 (patch)
tree5b535e1180233484d044e2df07213801837e3f7b /include/util_filter.h
parentefd2868a62e976df303dbb9c3847b95f4d56f5a6 (diff)
downloadhttpd-abab1d4cc18662bda14bc06cccdbeb579473add1.tar.gz
util_filter: keep filters with aside buckets in order.
Read or write of filter's pending data must happen in the same order as the filter chain, thus we can't use an apr_hash_t to maintain the pending filters since it provides no garantee on this matter. Instead use an APR_RING maintained in c->pending_filters, and since both the name (was c->filters) and the type changed, MAJOR is bumped (trunk only code anyway so far). git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1835640 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'include/util_filter.h')
-rw-r--r--include/util_filter.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/include/util_filter.h b/include/util_filter.h
index 4ed5fe8b59..af9eba9c18 100644
--- a/include/util_filter.h
+++ b/include/util_filter.h
@@ -299,9 +299,16 @@ struct ap_filter_t {
/** Dedicated pool to use for deferred writes. */
apr_pool_t *deferred_pool;
+ /** Entry in ring of pending filters (with setaside buckets). */
+ APR_RING_ENTRY(ap_filter_t) pending;
};
/**
+ * @brief The representation of a filters' ring.
+ */
+typedef APR_RING_HEAD(ap_filter_ring, ap_filter_t) ap_filter_ring_t;
+
+/**
* Get the current bucket brigade from the next filter on the filter
* stack. The filter returns an apr_status_t value. If the bottom-most
* filter doesn't read from the network, then ::AP_NOBODY_READ is returned.