diff src/http/ngx_http_core_module.c @ 172:1b490fc19afa NGINX_0_3_33

nginx 0.3.33 *) Feature: the "http_503" parameter of the "proxy_next_upstream" or "fastcgi_next_upstream" directives. *) Bugfix: ngx_http_perl_module did not work with inlined in the configuration code, if it was not started with the "sub" word. *) Bugfix: in the "post_action" directive.
author Igor Sysoev <http://sysoev.ru>
date Wed, 15 Mar 2006 00:00:00 +0300
parents 3314be145cb9
children 3080c5392b89
line wrap: on
line diff
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -1003,12 +1003,9 @@ u_char *
 ngx_http_map_uri_to_path(ngx_http_request_t *r, ngx_str_t *path,
     size_t reserved)
 {
-    u_char                       *last;
-    size_t                        alias, len;
-    ngx_http_script_code_pt       code;
-    ngx_http_script_engine_t      e;
-    ngx_http_core_loc_conf_t     *clcf;
-    ngx_http_script_len_code_pt   lcode;
+    u_char                    *last;
+    size_t                     alias;
+    ngx_http_core_loc_conf_t  *clcf;
 
     clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
 
@@ -1021,11 +1018,13 @@ ngx_http_map_uri_to_path(ngx_http_reques
         return NULL;
     }
 
+    reserved += r->uri.len - alias + 1;
+
     if (clcf->root_lengths == NULL) {
 
         r->root_length = clcf->root.len;
 
-        path->len = clcf->root.len + r->uri.len - alias + 1 + reserved;
+        path->len = clcf->root.len + reserved;
 
         path->data = ngx_palloc(r->pool, path->len);
         if (path->data == NULL) {
@@ -1033,43 +1032,18 @@ ngx_http_map_uri_to_path(ngx_http_reques
         }
 
         last = ngx_copy(path->data, clcf->root.data, clcf->root.len);
-        last = ngx_cpystrn(last, r->uri.data + alias, r->uri.len - alias + 1);
-
-        return last;
-    }
-
-    ngx_memzero(&e, sizeof(ngx_http_script_engine_t));
-
-    e.ip = clcf->root_lengths->elts;
-    e.request = r;
-    e.flushed = 1;
-
-    len = 0;
-
-    while (*(uintptr_t *) e.ip) {
-        lcode = *(ngx_http_script_len_code_pt *) e.ip;
-        len += lcode(&e);
+
+    } else {
+        last = ngx_http_script_run(r, path, clcf->root_lengths->elts, reserved,
+                                   clcf->root_values->elts);
+        if (last == NULL) {
+            return NULL;
+        }
+
+        r->root_length = path->len - reserved;
     }
 
-    r->root_length = len;
-
-    len += r->uri.len - alias + 1 + reserved;
-
-    path->len = len;
-    path->data = ngx_palloc(r->pool, len);
-    if (path->data == NULL) {
-        return NULL;
-    }
-
-    e.ip = clcf->root_values->elts;
-    e.pos = path->data;
-
-    while (*(uintptr_t *) e.ip) {
-        code = *(ngx_http_script_code_pt *) e.ip;
-        code((ngx_http_script_engine_t *) &e);
-    }
-
-    last = ngx_cpystrn(e.pos, r->uri.data + alias, r->uri.len - alias + 1);
+    last = ngx_cpystrn(last, r->uri.data + alias, r->uri.len - alias + 1);
 
     return last;
 }