diff options
author | Stefan Eissing <icing@apache.org> | 2022-03-18 10:52:52 +0100 |
---|---|---|
committer | Stefan Eissing <icing@apache.org> | 2022-03-18 10:52:52 +0100 |
commit | 6bd9d17e081692d3555d1c9803962c883acd136b (patch) | |
tree | 61bed2fc5a3746e58932712e5c5eb477a11fa5f0 /modules/http2/h2_mplx.h | |
parent | Update to test against OpenSSL 3.0.2. (diff) | |
download | apache2-6bd9d17e081692d3555d1c9803962c883acd136b.tar.xz apache2-6bd9d17e081692d3555d1c9803962c883acd136b.zip |
*) core: adding a new hook and method to the API:
create_secondary_connection and ap_create_secondary_connection()
to setup connections related to a "master" one, as used in
the HTTP/2 protocol implementation.
*) mod_http2: using the new API calls to get rid of knowledge
about how the core handles conn_rec specifics.
Improvements in pollset stream handling to use less sets.
Using atomic read/writes instead of volatiles now.
Keeping a reserve of "transit" pools and bucket_allocs for
use on secondary connections to avoid repeated setup/teardowns.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1899032 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'modules/http2/h2_mplx.h')
-rw-r--r-- | modules/http2/h2_mplx.h | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/modules/http2/h2_mplx.h b/modules/http2/h2_mplx.h index d5c4f9916f..662682a05b 100644 --- a/modules/http2/h2_mplx.h +++ b/modules/http2/h2_mplx.h @@ -44,6 +44,13 @@ struct h2_iqueue; #include <apr_queue.h> +typedef struct h2_c2_transit h2_c2_transit; + +struct h2_c2_transit { + apr_pool_t *pool; + apr_bucket_alloc_t *bucket_alloc; +}; + typedef struct h2_mplx h2_mplx; struct h2_mplx { @@ -83,14 +90,16 @@ struct h2_mplx { apr_array_header_t *streams_ev_in; apr_array_header_t *streams_ev_out; -#if !H2_POLL_STREAMS - apr_thread_mutex_t *poll_lock; /* not the painter */ + apr_thread_mutex_t *poll_lock; /* protect modifications of queues below */ struct h2_iqueue *streams_input_read; /* streams whose input has been read from */ struct h2_iqueue *streams_output_written; /* streams whose output has been written to */ -#endif + struct h2_workers *workers; /* h2 workers process wide instance */ request_rec *scratch_r; /* pseudo request_rec for scoreboard reporting */ + + apr_size_t max_spare_transits; /* max number of transit pools idling */ + apr_array_header_t *c2_transits; /* base pools for running c2 connections */ }; apr_status_t h2_mplx_c1_child_init(apr_pool_t *pool, server_rec *s); |