summaryrefslogtreecommitdiffstats
path: root/modules/http2/h2_mplx.h
diff options
context:
space:
mode:
authorStefan Eissing <icing@apache.org>2022-03-18 10:52:52 +0100
committerStefan Eissing <icing@apache.org>2022-03-18 10:52:52 +0100
commit6bd9d17e081692d3555d1c9803962c883acd136b (patch)
tree61bed2fc5a3746e58932712e5c5eb477a11fa5f0 /modules/http2/h2_mplx.h
parentUpdate to test against OpenSSL 3.0.2. (diff)
downloadapache2-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.h15
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);