summaryrefslogtreecommitdiff
path: root/server/config.c
diff options
context:
space:
mode:
authorJeff Trawick <trawick@apache.org>2012-09-24 12:42:32 +0000
committerJeff Trawick <trawick@apache.org>2012-09-24 12:42:32 +0000
commitdfc4862f0e912c5fa248ab9eb1cfd1a5f96e3f44 (patch)
treedd3b7cda1a7ff0523368f869f39bd424c561856d /server/config.c
parentd22e888e53ced38341c7c32c759973000eab4bd3 (diff)
downloadhttpd-dfc4862f0e912c5fa248ab9eb1cfd1a5f96e3f44.tar.gz
add pre_htaccess hook; in conjunction with earlier dirwalk_stat
and post_perdir_config hooks, this should allow mpm-itk to be used without patches to httpd core git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1389339 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'server/config.c')
-rw-r--r--server/config.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/server/config.c b/server/config.c
index fb07623b0a..a9adddd75f 100644
--- a/server/config.c
+++ b/server/config.c
@@ -80,6 +80,7 @@ APR_HOOK_STRUCT(
APR_HOOK_LINK(quick_handler)
APR_HOOK_LINK(optional_fn_retrieve)
APR_HOOK_LINK(test_config)
+ APR_HOOK_LINK(pre_htaccess)
)
AP_IMPLEMENT_HOOK_RUN_ALL(int, header_parser,
@@ -171,6 +172,9 @@ AP_IMPLEMENT_HOOK_RUN_FIRST(int, handler, (request_rec *r),
AP_IMPLEMENT_HOOK_RUN_FIRST(int, quick_handler, (request_rec *r, int lookup),
(r, lookup), DECLINED)
+AP_IMPLEMENT_HOOK_RUN_FIRST(int, pre_htaccess, (request_rec *r, const char *filename),
+ (r, filename), DECLINED)
+
/* hooks with no args are implemented last, after disabling APR hook probes */
#if defined(APR_HOOK_PROBES_ENABLED)
#undef APR_HOOK_PROBES_ENABLED
@@ -2078,6 +2082,7 @@ AP_CORE_DECLARE(int) ap_parse_htaccess(ap_conf_vector_t **result,
struct htaccess_result *new;
ap_conf_vector_t *dc = NULL;
apr_status_t status;
+ int rc;
/* firstly, search cache */
for (cache = r->htaccess; cache != NULL; cache = cache->next) {
@@ -2104,6 +2109,10 @@ AP_CORE_DECLARE(int) ap_parse_htaccess(ap_conf_vector_t **result,
*/
filename = ap_make_full_path(r->pool, d,
ap_getword_conf(r->pool, &access_name));
+ rc = ap_run_pre_htaccess(r, filename);
+ if (rc != DECLINED && rc != OK) {
+ return rc;
+ }
status = ap_pcfg_openfile(&f, r->pool, filename);
if (status == APR_SUCCESS) {