changeset 12:7da8ea7c4448 NGINX_0_1_6

nginx 0.1.6 *) Bugfix: some location directive combinations with the regular expressions caused the wrong configuration choose.
author Igor Sysoev <http://sysoev.ru>
date Thu, 11 Nov 2004 00:00:00 +0300
parents 74f668c50bce
children 6bf8a3012a54
files CHANGES CHANGES.ru src/core/nginx.h src/http/ngx_http_core_module.c
diffstat 4 files changed, 20 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,9 @@
+
+Changes with nginx 0.1.6                                         11 Nov 2004
+
+    *) Bugfix: some location directive combiations with the regular 
+       expressions caused the wrong configuration choose.
+
 
 Changes with nginx 0.1.5                                         11 Nov 2004
 
--- a/CHANGES.ru
+++ b/CHANGES.ru
@@ -1,3 +1,9 @@
+
+Изменения в nginx 0.1.6                                           11.11.2004
+
+    *) Исправление: при некоторых комбинациях директив location c регулярными 
+       выражениями использовалась конфигурация не из того location.
+
 
 Изменения в nginx 0.1.5                                           11.11.2004
 
--- a/src/core/nginx.h
+++ b/src/core/nginx.h
@@ -8,7 +8,7 @@
 #define _NGINX_H_INCLUDED_
 
 
-#define NGINX_VER          "nginx/0.1.5"
+#define NGINX_VER          "nginx/0.1.6"
 
 #define NGINX_VAR          "NGINX"
 #define NGX_NEWPID_EXT     ".newbin"
--- a/src/http/ngx_http_core_module.c
+++ b/src/http/ngx_http_core_module.c
@@ -992,6 +992,11 @@ static int ngx_cmp_locations(const void 
         return 1;
     }
 
+    if (!first->regex && second->regex) {
+        /* shift the regex matches to the end */
+        return -1;
+    }
+
     if (first->regex || second->regex) {
         /* do not sort the regex matches */
         return 0;
@@ -1061,8 +1066,7 @@ static char *ngx_location_block(ngx_conf
 
     if (cf->args->nelts == 3) {
         if (value[1].len == 1 && value[1].data[0] == '=') {
-            clcf->name.len = value[2].len;
-            clcf->name.data = value[2].data;
+            clcf->name = value[2];
             clcf->exact_match = 1;
 
         } else if ((value[1].len == 1 && value[1].data[0] == '~')
@@ -1098,8 +1102,7 @@ static char *ngx_location_block(ngx_conf
         }
 
     } else {
-        clcf->name.len = value[1].len;
-        clcf->name.data = value[1].data;
+        clcf->name = value[1];
     }
 
     pclcf = pctx->loc_conf[ngx_http_core_module.ctx_index];