diff options
author | Yann Ylavic <ylavic@apache.org> | 2018-07-11 13:03:35 +0000 |
---|---|---|
committer | Yann Ylavic <ylavic@apache.org> | 2018-07-11 13:03:35 +0000 |
commit | abab1d4cc18662bda14bc06cccdbeb579473add1 (patch) | |
tree | 5b535e1180233484d044e2df07213801837e3f7b /include/util_filter.h | |
parent | efd2868a62e976df303dbb9c3847b95f4d56f5a6 (diff) | |
download | httpd-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.h | 7 |
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. |