1
0
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:
William A. Rowe Jr
2001-08-25 23:43:19 +00:00
parent 2a2a31a542
commit 307ab55886
8 changed files with 90 additions and 62 deletions

View File

@@ -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;
}