void h2_h2_register_hooks(void) { /* This hook runs on new connections before mod_ssl has a say. * Its purpose is to prevent mod_ssl from touching our pseudo-connections * for streams. */ ap_hook_pre_connection(h2_h2_stream_pre_conn, NULL, mod_ssl, APR_HOOK_FIRST); /* This hook runs on new connection after mod_ssl, but before the core * httpd. Its purpose is to register, if TLS is used, the ALPN callbacks * that enable us to chose "h2" as next procotol if the client supports it. */ ap_hook_pre_connection(h2_h2_pre_conn, mod_ssl, mod_core, APR_HOOK_LAST); /* When the connection processing actually starts, we might to * take over, if h2* was selected by ALPN on a TLS connection. */ ap_hook_process_connection(h2_h2_process_conn, NULL, NULL, APR_HOOK_FIRST); /* Perform connection cleanup before the actual processing happens. */ ap_hook_process_connection(h2_h2_cleanup_conn, mod_reqtimeout, NULL, APR_HOOK_LAST); ap_hook_post_read_request(h2_h2_post_read_req, NULL, NULL, APR_HOOK_MIDDLE); }
static void register_hooks(apr_pool_t *p) { ap_hook_post_config(http_post_config, NULL, NULL, APR_HOOK_MIDDLE); ap_hook_process_connection(ap_process_http_connection, NULL, NULL, APR_HOOK_REALLY_LAST); ap_hook_map_to_storage(ap_send_http_trace,NULL,NULL,APR_HOOK_MIDDLE); ap_hook_map_to_storage(http_send_options,NULL,NULL,APR_HOOK_MIDDLE); ap_hook_http_scheme(http_scheme,NULL,NULL,APR_HOOK_REALLY_LAST); ap_hook_default_port(http_port,NULL,NULL,APR_HOOK_REALLY_LAST); ap_hook_create_request(http_create_request, NULL, NULL, APR_HOOK_REALLY_LAST); ap_http_input_filter_handle = ap_register_input_filter("HTTP_IN", ap_http_filter, NULL, AP_FTYPE_PROTOCOL); ap_http_header_filter_handle = ap_register_output_filter("HTTP_HEADER", ap_http_header_filter, NULL, AP_FTYPE_PROTOCOL); ap_chunk_filter_handle = ap_register_output_filter("CHUNK", ap_http_chunk_filter, NULL, AP_FTYPE_TRANSCODE); ap_http_outerror_filter_handle = ap_register_output_filter("HTTP_OUTERROR", ap_http_outerror_filter, NULL, AP_FTYPE_PROTOCOL); ap_byterange_filter_handle = ap_register_output_filter("BYTERANGE", ap_byterange_filter, NULL, AP_FTYPE_PROTOCOL); ap_method_registry_init(p); }
void h2_h2_register_hooks(void) { /* Our main processing needs to run quite late. Definitely after mod_ssl, * as we need its connection filters, but also before reqtimeout as its * method of timeouts is specific to HTTP/1.1 (as of now). * The core HTTP/1 processing run as REALLY_LAST, so we will have * a chance to take over before it. */ ap_hook_process_connection(h2_h2_process_conn, mod_ssl, mod_reqtimeout, APR_HOOK_LAST); /* One last chance to properly say goodbye if we have not done so * already. */ ap_hook_pre_close_connection(h2_h2_pre_close_conn, NULL, mod_ssl, APR_HOOK_LAST); /* With "H2SerializeHeaders On", we install the filter in this hook * that parses the response. This needs to happen before any other post * read function terminates the request with an error. Otherwise we will * never see the response. */ ap_hook_post_read_request(h2_h2_post_read_req, NULL, NULL, APR_HOOK_REALLY_FIRST); ap_hook_fixups(h2_h2_late_fixups, NULL, NULL, APR_HOOK_LAST); /* special bucket type transfer through a h2_bucket_beam */ h2_register_bucket_beamer(h2_bucket_headers_beam); h2_register_bucket_beamer(h2_bucket_observer_beam); }
void h2_task_register_hooks(void) { /* This hook runs on new connections before mod_ssl has a say. * Its purpose is to prevent mod_ssl from touching our pseudo-connections * for streams. */ ap_hook_pre_connection(h2_task_pre_conn, NULL, mod_ssl, APR_HOOK_FIRST); /* When the connection processing actually starts, we might to * take over, if the connection is for a task. */ ap_hook_process_connection(h2_task_process_conn, NULL, NULL, APR_HOOK_FIRST); ap_register_output_filter("H2_RESPONSE", h2_response_output_filter, NULL, AP_FTYPE_PROTOCOL); ap_register_input_filter("H2_TO_H1", h2_filter_stream_input, NULL, AP_FTYPE_NETWORK); ap_register_output_filter("H1_TO_H2", h2_filter_stream_output, NULL, AP_FTYPE_NETWORK); ap_register_output_filter("H1_TO_H2_RESP", h2_filter_read_response, NULL, AP_FTYPE_PROTOCOL); ap_register_output_filter("H2_TRAILERS", h2_response_trailers_filter, NULL, AP_FTYPE_PROTOCOL); }
static void register_hooks(apr_pool_t *p) { ap_hook_post_config(post_config, NULL, NULL, APR_HOOK_MIDDLE); ap_hook_process_connection(pre_connection, NULL, NULL, APR_HOOK_FIRST); ap_hook_child_init(child_init, NULL, NULL, APR_HOOK_MIDDLE); ap_hook_handler(check_contents, NULL, NULL, APR_HOOK_LAST); }
void h2_task_register_hooks(void) { /* This hook runs on new connections before mod_ssl has a say. * Its purpose is to prevent mod_ssl from touching our pseudo-connections * for streams. */ ap_hook_pre_connection(h2_task_pre_conn, NULL, mod_ssl, APR_HOOK_FIRST); /* When the connection processing actually starts, we might * take over, if the connection is for a task. */ ap_hook_process_connection(h2_task_process_conn, NULL, NULL, APR_HOOK_FIRST); ap_register_input_filter("H2_SLAVE_IN", h2_filter_slave_in, NULL, AP_FTYPE_NETWORK); ap_register_output_filter("H2_SLAVE_OUT", h2_filter_slave_output, NULL, AP_FTYPE_NETWORK); ap_register_output_filter("H2_PARSE_H1", h2_filter_parse_h1, NULL, AP_FTYPE_NETWORK); ap_register_input_filter("H2_REQUEST", h2_filter_request_in, NULL, AP_FTYPE_PROTOCOL); ap_register_output_filter("H2_RESPONSE", h2_filter_headers_out, NULL, AP_FTYPE_PROTOCOL); ap_register_output_filter("H2_TRAILERS_OUT", h2_filter_trailers_out, NULL, AP_FTYPE_PROTOCOL); }
void h2_h2_register_hooks(void) { /* When the connection processing actually starts, we might to * take over, if h2* was selected as protocol. */ ap_hook_process_connection(h2_h2_process_conn, mod_ssl, NULL, APR_HOOK_MIDDLE); /* Perform connection cleanup before the actual processing happens. */ ap_hook_process_connection(h2_h2_remove_timeout, mod_reqtimeout, NULL, APR_HOOK_LAST); /* With "H2SerializeHeaders On", we install the filter in this hook * that parses the response. This needs to happen before any other post * read function terminates the request with an error. Otherwise we will * never see the response. */ ap_hook_post_read_request(h2_h2_post_read_req, NULL, NULL, APR_HOOK_REALLY_FIRST); }
static void ssl_register_hooks(apr_pool_t *p) { /* ssl_hook_ReadReq needs to use the BrowserMatch settings so must * run after mod_setenvif's post_read_request hook. */ static const char *pre_prr[] = { "mod_setenvif.c", NULL }; ssl_io_filter_register(p); ap_hook_pre_connection(ssl_hook_pre_connection,NULL,NULL, APR_HOOK_MIDDLE); ap_hook_process_connection(ssl_hook_process_connection, NULL, NULL, APR_HOOK_MIDDLE); ap_hook_test_config (ssl_hook_ConfigTest, NULL,NULL, APR_HOOK_MIDDLE); ap_hook_post_config (ssl_init_Module, NULL,NULL, APR_HOOK_MIDDLE); ap_hook_http_scheme (ssl_hook_http_scheme, NULL,NULL, APR_HOOK_MIDDLE); ap_hook_default_port (ssl_hook_default_port, NULL,NULL, APR_HOOK_MIDDLE); ap_hook_pre_config (ssl_hook_pre_config, NULL,NULL, APR_HOOK_MIDDLE); ap_hook_child_init (ssl_init_Child, NULL,NULL, APR_HOOK_MIDDLE); ap_hook_check_authn (ssl_hook_UserCheck, NULL,NULL, APR_HOOK_FIRST, AP_AUTH_INTERNAL_PER_CONF); ap_hook_fixups (ssl_hook_Fixup, NULL,NULL, APR_HOOK_MIDDLE); ap_hook_check_access (ssl_hook_Access, NULL,NULL, APR_HOOK_MIDDLE, AP_AUTH_INTERNAL_PER_CONF); ap_hook_check_authz (ssl_hook_Auth, NULL,NULL, APR_HOOK_MIDDLE, AP_AUTH_INTERNAL_PER_CONF); ap_hook_post_read_request(ssl_hook_ReadReq, pre_prr,NULL, APR_HOOK_MIDDLE); ssl_var_register(p); APR_REGISTER_OPTIONAL_FN(ssl_proxy_enable); APR_REGISTER_OPTIONAL_FN(ssl_engine_disable); ap_register_auth_provider(p, AUTHZ_PROVIDER_GROUP, "ssl", AUTHZ_PROVIDER_VERSION, &ssl_authz_provider_require_ssl, AP_AUTH_INTERNAL_PER_CONF); ap_register_auth_provider(p, AUTHZ_PROVIDER_GROUP, "ssl-verify-client", AUTHZ_PROVIDER_VERSION, &ssl_authz_provider_verify_client, AP_AUTH_INTERNAL_PER_CONF); }
static void register_hooks(apr_pool_t *p) { ap_hook_process_connection(process_echo_connection, NULL, NULL, APR_HOOK_MIDDLE); }