nginx-0.0.10-2004-08-30-23:24:51 import
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
index 06c6165..d242ebf 100644
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -14,7 +14,7 @@
static void ngx_http_phase_event_handler(ngx_event_t *rev);
static void ngx_http_run_phases(ngx_http_request_t *r);
static ngx_int_t ngx_http_find_location(ngx_http_request_t *r,
- ngx_array_t *locations);
+ ngx_array_t *locations, size_t len);
static void *ngx_http_core_create_main_conf(ngx_conf_t *cf);
static char *ngx_http_core_init_main_conf(ngx_conf_t *cf, void *conf);
@@ -486,7 +486,7 @@
cscf = ngx_http_get_module_srv_conf(r, ngx_http_core_module);
- rc = ngx_http_find_location(r, &cscf->locations);
+ rc = ngx_http_find_location(r, &cscf->locations, 0);
if (rc == NGX_HTTP_INTERNAL_SERVER_ERROR) {
return rc;
@@ -551,7 +551,7 @@
static ngx_int_t ngx_http_find_location(ngx_http_request_t *r,
- ngx_array_t *locations)
+ ngx_array_t *locations, size_t len)
{
ngx_int_t n, rc;
ngx_uint_t i, found;
@@ -604,14 +604,7 @@
return NGX_HTTP_LOCATION_EXACT;
}
- clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
-
-#if 0
- ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
- "p:%d c:%d", clcf->name.len, clcfp[i]->name.len);
-#endif
-
- if (clcf->name.len > clcfp[i]->name.len) {
+ if (len > clcfp[i]->name.len) {
/* the previous match is longer */
break;
}
@@ -625,7 +618,7 @@
clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
if (clcf->locations.nelts) {
- rc = ngx_http_find_location(r, &clcf->locations);
+ rc = ngx_http_find_location(r, &clcf->locations, len);
if (rc != NGX_OK) {
return rc;
@@ -1629,6 +1622,10 @@
lcf->alias = alias;
lcf->root = value[1];
+ if (!alias && lcf->root.data[lcf->root.len - 1] == '/') {
+ lcf->root.len--;
+ }
+
return NGX_CONF_OK;
}