31#include <nghttp2/nghttp2.h>
58#if defined(AP_MODULE_FLAG_NONE)
96 (void)
plog;(void)ptemp;
97#ifdef H2_NG2_CHANGE_PRIO
103#ifdef H2_NG2_INVALID_HEADER_CB
106#ifdef H2_NG2_LOCAL_WIN_SIZE
113 "initializing post config dry run");
121 "mod_http2 (v%s, feats=%s%s%s%s, nghttp2 %s), initializing...",
127 ngh2? ngh2->version_str :
"unknown");
132 "The mpm module (%s) is not supported by mod_http2. The mpm determines "
133 "how things are processed in your server. HTTP/2 has more demands in "
134 "this regard and the currently selected mpm will just not do. "
135 "This is an advisory warning. Your server will continue to work, but "
136 "the HTTP/2 protocol will be inactive.",
173 APLOGNO(02949)
"initializing connection handling");
181 static const char *
const mod_ssl[] = {
"mod_ssl.c",
NULL};
196#if AP_MODULE_MAGIC_AT_LEAST(20120211, 110)
213 return ctx?
"on" :
"off";
310#define H2_ALEN(a) (sizeof(a)/sizeof((a)[0]))
343 if (
vdef->subprocess) {
APR-UTIL registration of functions exported by modules.
Apache optional hook functions.
APR Standard Headers Support.
#define AP_MODULE_FLAG_ALWAYS_MERGE
void ap_hook_post_config(ap_HOOK_post_config_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
#define AP_DECLARE_MODULE(foo)
void ap_hook_child_init(ap_HOOK_child_init_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
void ap_hook_fixups(ap_HOOK_fixups_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
void ap_hook_child_stopping(ap_HOOK_child_stopping_t *pf, const char *const *aszPre, const char *const *aszSucc, int nOrder)
apr_brigade_flush void * ctx
#define APR_REGISTER_OPTIONAL_FN(name)
#define STANDARD20_MODULE_STUFF
#define ap_strrchr_c(s, c)
const char int apr_pool_t * pool
apr_vformatter_buff_t * c
#define H2_STREAM_CLIENT_INITIATED(id)
void h2_c1_child_stopping(apr_pool_t *pool, int graceful)
void h2_c1_register_hooks(void)
apr_status_t h2_c1_child_init(apr_pool_t *pool, server_rec *s)
static const char *const mod_ssl[]
void h2_c2_register_hooks(void)
int h2_mpm_supported(void)
apr_status_t h2_c2_child_init(apr_pool_t *pool, server_rec *s)
const char * h2_conn_mpm_name(void)
void * h2_config_create_dir(apr_pool_t *pool, char *x)
void * h2_config_create_svr(apr_pool_t *pool, server_rec *s)
const command_rec h2_cmds[]
void * h2_config_merge_svr(apr_pool_t *pool, void *basev, void *addv)
int h2_config_geti(request_rec *r, server_rec *s, h2_config_var_t var)
void h2_get_workers_config(server_rec *s, int *pminw, int *pmaxw, apr_time_t *pidle_limit)
void * h2_config_merge_dir(apr_pool_t *pool, void *basev, void *addv)
#define h2_conn_ctx_get(c)
static apr_pool_t * pchild
const h2_stream * h2_mplx_c2_stream_get(h2_mplx *m, int stream_id)
apr_status_t h2_protocol_init(apr_pool_t *pool, server_rec *s)
int h2_session_push_enabled(h2_session *session)
void h2_switch_register_hooks(void)
apr_status_t h2_switch_init(apr_pool_t *pool, server_rec *s)
#define MOD_HTTP2_VERSION
void h2_ws_register_hooks(void)
static int h2_post_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s)
static const char * val_H2_STREAM_TAG(apr_pool_t *p, server_rec *s, conn_rec *c, request_rec *r, h2_conn_ctx_t *ctx)
static int h2_h2_fixups(request_rec *r)
static void http2_get_num_workers(server_rec *s, int *minw, int *maxw)
static const char * val_H2_PUSHED_ON(apr_pool_t *p, server_rec *s, conn_rec *c, request_rec *r, h2_conn_ctx_t *conn_ctx)
static const char * val_HTTP2(apr_pool_t *p, server_rec *s, conn_rec *c, request_rec *r, h2_conn_ctx_t *ctx)
const char * h2_var_lookup(apr_pool_t *p, server_rec *s, conn_rec *c, request_rec *r, h2_conn_ctx_t *ctx)
static void h2_child_init(apr_pool_t *pchild, server_rec *s)
static const char * val_H2_PUSHED(apr_pool_t *p, server_rec *s, conn_rec *c, request_rec *r, h2_conn_ctx_t *conn_ctx)
static void h2_hooks(apr_pool_t *pool)
static const char * val_H2_STREAM_ID(apr_pool_t *p, server_rec *s, conn_rec *c, request_rec *r, h2_conn_ctx_t *ctx)
static char * http2_var_lookup(apr_pool_t *, server_rec *, conn_rec *, request_rec *, char *name)
static int http2_is_h2(conn_rec *)
static h2_var_def H2_VARS[]
static const char * val_H2_PUSH(apr_pool_t *p, server_rec *s, conn_rec *c, request_rec *r, h2_conn_ctx_t *conn_ctx)
Multi-Processing Modules functions.
Structure to store things which are per connection.
A structure that represents the current request.
apr_table_t * subprocess_env
A structure to store information for each virtual server.