diff --git a/modules/http/http_core.c b/modules/http/http_core.c index f59e2533d3..e3f2c1e496 100644 --- a/modules/http/http_core.c +++ b/modules/http/http_core.c @@ -295,6 +295,13 @@ static int ap_process_http_connection(conn_rec *c) return OK; } +static void ap_http_insert_filter(request_rec *r) +{ + ap_add_output_filter("BYTERANGE", NULL, r, r->connection); + ap_add_output_filter("CONTENT_LENGTH", NULL, r, r->connection); + ap_add_output_filter("HTTP_HEADER", NULL, r, r->connection); +} + static void register_hooks(apr_pool_t *p) { ap_hook_pre_connection(ap_pre_http_connection,NULL,NULL, @@ -304,6 +311,7 @@ static void register_hooks(apr_pool_t *p) ap_hook_http_method(http_method,NULL,NULL,APR_HOOK_REALLY_LAST); ap_hook_default_port(http_port,NULL,NULL,APR_HOOK_REALLY_LAST); + ap_hook_insert_filter(ap_http_insert_filter, NULL, NULL, APR_HOOK_REALLY_LAST); ap_register_input_filter("HTTP_IN", ap_http_filter, AP_FTYPE_CONNECTION); ap_register_input_filter("DECHUNK", ap_dechunk_filter, AP_FTYPE_TRANSCODE); ap_register_output_filter("HTTP_HEADER", ap_http_header_filter, diff --git a/modules/http/http_request.c b/modules/http/http_request.c index 95c353b6f1..735c1e6d72 100644 --- a/modules/http/http_request.c +++ b/modules/http/http_request.c @@ -517,10 +517,6 @@ static request_rec *internal_internal_redirect(const char *new_uri, new->output_filters = r->connection->output_filters; new->input_filters = r->connection->input_filters; - ap_add_output_filter("BYTERANGE", NULL, new, new->connection); - ap_add_output_filter("CONTENT_LENGTH", NULL, new, new->connection); - ap_add_output_filter("HTTP_HEADER", NULL, new, new->connection); - apr_table_setn(new->subprocess_env, "REDIRECT_STATUS", apr_psprintf(r->pool, "%d", r->status)); diff --git a/modules/metadata/mod_headers.c b/modules/metadata/mod_headers.c index 8c90e23d90..d9a8a5e7bf 100644 --- a/modules/metadata/mod_headers.c +++ b/modules/metadata/mod_headers.c @@ -231,7 +231,7 @@ static const char *header_cmd(cmd_parms *cmd, void *indirconf, } /* handle RequestHeader directive */ -static const char *header_in_cmd(cmd_parms *cmd, void *indirconf, +static const char *request_header_cmd(cmd_parms *cmd, void *indirconf, const char *action, const char *inhdr, const char *value) { @@ -317,7 +317,7 @@ static const command_rec headers_cmds[] = { AP_INIT_TAKE23("Header", header_cmd, NULL, OR_FILEINFO, "an action, header and value"), - AP_INIT_TAKE23("RequestHeader", header_in_cmd, NULL, OR_FILEINFO, + AP_INIT_TAKE23("RequestHeader", request_header_cmd, NULL, OR_FILEINFO, "an action, header and value"), {NULL} }; @@ -326,7 +326,7 @@ static void register_hooks(apr_pool_t *p) { ap_hook_insert_filter(ap_headers_insert_output_filter, NULL, NULL, APR_HOOK_LAST); ap_hook_fixups(ap_headers_fixup, NULL, NULL, APR_HOOK_LAST); - ap_register_output_filter("FIXUP_HEADERS_OUT", ap_headers_output_filter, AP_FTYPE_CONTENT); + ap_register_output_filter("FIXUP_HEADERS_OUT", ap_headers_output_filter, AP_FTYPE_HTTP_HEADER); } module AP_MODULE_DECLARE_DATA headers_module = diff --git a/server/protocol.c b/server/protocol.c index 1842a7ebbb..28bb4dec5f 100644 --- a/server/protocol.c +++ b/server/protocol.c @@ -590,10 +590,6 @@ request_rec *ap_read_request(conn_rec *conn) ? r->server->keep_alive_timeout * APR_USEC_PER_SEC : r->server->timeout * APR_USEC_PER_SEC)); - ap_add_output_filter("BYTERANGE", NULL, r, r->connection); - ap_add_output_filter("CONTENT_LENGTH", NULL, r, r->connection); - ap_add_output_filter("HTTP_HEADER", NULL, r, r->connection); - /* Get the request... */ if (!read_request_line(r)) { if (r->status == HTTP_REQUEST_URI_TOO_LARGE) {