mirror of
https://github.com/apache/httpd.git
synced 2025-08-07 04:02:58 +03:00
Introduce the map_to_storage hook, which allows modules to bypass
the directory_walk and file_walk for non-file requests. TRACE shortcut moved to http_protocol.c as APR_HOOK_MIDDLE, and the directory_walk/file_walk happen as APR_HOOK_VERY_LAST in core.c. A seperate patch to mod_proxy is required to short circuit both the TRACE and directory_walk/file_walk stuff. That patch is next. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@90665 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -253,7 +253,7 @@ static void process_request_internal(request_rec *r)
|
||||
|
||||
ap_getparents(r->uri); /* OK --- shrinking transformations... */
|
||||
|
||||
if ((access_status = location_walk(r))) {
|
||||
if ((access_status = ap_location_walk(r))) {
|
||||
ap_die(access_status, r);
|
||||
return;
|
||||
}
|
||||
@@ -263,40 +263,16 @@ static void process_request_internal(request_rec *r)
|
||||
return;
|
||||
}
|
||||
|
||||
if (r->proto_num > HTTP_VERSION(1,0) && apr_table_get(r->subprocess_env, "downgrade-1.0")) {
|
||||
r->proto_num = HTTP_VERSION(1,0);
|
||||
}
|
||||
|
||||
if (!r->proxyreq) {
|
||||
/*
|
||||
* We don't want TRACE to run through the normal handler set, we
|
||||
* handle it specially.
|
||||
*/
|
||||
if (r->method_number == M_TRACE) {
|
||||
if ((access_status = ap_send_http_trace(r)))
|
||||
ap_die(access_status, r);
|
||||
else
|
||||
ap_finalize_request_protocol(r);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* NB: directory_walk() clears the per_dir_config, so we don't inherit
|
||||
* from location_walk() above
|
||||
*/
|
||||
|
||||
if ((access_status = directory_walk(r))) {
|
||||
ap_die(access_status, r);
|
||||
if ((access_status = ap_run_map_to_storage(r))) {
|
||||
/* This request wasn't in storage (e.g. TRACE) */
|
||||
if (access_status == DONE)
|
||||
ap_finalize_request_protocol(r);
|
||||
else
|
||||
ap_die(access_status, r);
|
||||
return;
|
||||
}
|
||||
|
||||
if ((access_status = file_walk(r))) {
|
||||
ap_die(access_status, r);
|
||||
return;
|
||||
}
|
||||
|
||||
if ((access_status = location_walk(r))) {
|
||||
if ((access_status = ap_location_walk(r))) {
|
||||
ap_die(access_status, r);
|
||||
return;
|
||||
}
|
||||
|
Reference in New Issue
Block a user