summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2004-11-11 20:58:09 +0000
committerIgor Sysoev <igor@sysoev.ru>2004-11-11 20:58:09 +0000
commit2a3f4908056a2cf19eab57cd00c0537fa7622482 (patch)
tree0c597749798af8ebeed5a2bc7c93976025662590
parent656f663caa03b0318a0d46ff9f312422826c04f2 (diff)
nginx-0.1.6-RELEASE importrelease-0.1.6
*) Bugfix: some location directive combinations with the regular expressions caused the wrong configuration choose.
-rw-r--r--docs/xml/nginx/changes.xml22
-rw-r--r--src/core/nginx.h2
-rw-r--r--src/http/ngx_http_core_module.c11
3 files changed, 27 insertions, 8 deletions
diff --git a/docs/xml/nginx/changes.xml b/docs/xml/nginx/changes.xml
index 52360471c..48f48c0fd 100644
--- a/docs/xml/nginx/changes.xml
+++ b/docs/xml/nginx/changes.xml
@@ -6,6 +6,22 @@
title="nginx">
+<changes ver="0.1.6" date="11.11.2004">
+
+<change type="bugfix">
+<para lang="ru">
+при некоторых комбинациях директив location c регулярными выражениями
+использовалась конфигурация не из того location.
+</para>
+<para lang="en">
+some location directive combiations with the regular expressions caused
+the wrong configuration choose.
+</para>
+</change>
+
+</changes>
+
+
<changes ver="0.1.5" date="11.11.2004">
<change type="bugfix">
@@ -22,11 +38,11 @@ alerts.
<change type="bugfix">
<para lang="ru">
в режиме прокси без использования sendfile на Solaris возникала
-ошибка "writev() failed (22: Invalid argument)". На других платформах,
-не поддерживающих sendfile, процесс зацикливался.
+ошибка "writev() failed <nobr>(22: Invalid argument)".</nobr>
+На других платформах, не поддерживающих sendfile, процесс зацикливался.
</para>
<para lang="en">
-there were the "writev() failed (22: Invalid argument)" errors on
+there were the "writev() failed <nobr>(22: Invalid argument)"</nobr> errors on
Solaris in proxy mode without sendfile. On other platforms that do not
support sendfile at all the process got caught in an endless loop.
</para>
diff --git a/src/core/nginx.h b/src/core/nginx.h
index 2be26e06b..a8c5ca1ba 100644
--- 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"
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
index 7e8cf6903..29a6f76fc 100644
--- 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 *one, const void *two)
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_t *cf, ngx_command_t *cmd, void *dummy)
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_t *cf, ngx_command_t *cmd, void *dummy)
}
} 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];