Mercurial > hg > nginx-vendor-current
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; }