aboutsummaryrefslogtreecommitdiff
path: root/src/http/ngx_http_variables.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2006-07-28 15:16:17 +0000
committerIgor Sysoev <igor@sysoev.ru>2006-07-28 15:16:17 +0000
commit8f1255877c4b64f83fce75baa4d903797e00e815 (patch)
treee6594c2c4578b85fa81c4a5fe334daac91142a6f /src/http/ngx_http_variables.c
parent741c6e9c1ecd17d2165f2e8e3426023117f4b15d (diff)
downloadnginx-8f1255877c4b64f83fce75baa4d903797e00e815.tar.gz
nginx-8f1255877c4b64f83fce75baa4d903797e00e815.zip
nginx-0.3.55-RELEASE importrelease-0.3.55
*) Feature: the "stub" parameter in the "include" SSI command. *) Feature: the "block" SSI command. *) Feature: the unicode2nginx script was added to contrib. *) Bugfix: if a "root" was specified by variable only, then the root was relative to a server prefix. *) Bugfix: if the request contained "//" or "/./" and escaped symbols after them, then the proxied request was sent unescaped. *) Bugfix: the $r->headers_in("Cookie") of the ngx_http_perl_module now returns all "Cookie" header lines. *) Bugfix: a segmentation fault occurred if "client_body_in_file_only on" was used and nginx switched to a next upstream. *) Bugfix: on some condition while reconfiguration character codes inside the "charset_map" may be treated invalid; the bug had appeared in 0.3.50.
Diffstat (limited to 'src/http/ngx_http_variables.c')
-rw-r--r--src/http/ngx_http_variables.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/src/http/ngx_http_variables.c b/src/http/ngx_http_variables.c
index 8aaee4595..f151f8789 100644
--- a/src/http/ngx_http_variables.c
+++ b/src/http/ngx_http_variables.c
@@ -523,15 +523,17 @@ static ngx_int_t
ngx_http_variable_headers(ngx_http_request_t *r, ngx_http_variable_value_t *v,
uintptr_t data)
{
- size_t len;
+ ssize_t len;
u_char *p;
- ngx_uint_t i;
+ ngx_uint_t i, n;
ngx_array_t *a;
ngx_table_elt_t **h;
a = (ngx_array_t *) ((char *) r + data);
- if (a->nelts == 0) {
+ n = a->nelts;
+
+ if (n == 0) {
v->not_found = 1;
return NGX_OK;
}
@@ -542,16 +544,16 @@ ngx_http_variable_headers(ngx_http_request_t *r, ngx_http_variable_value_t *v,
h = a->elts;
- if (a->nelts == 1) {
+ if (n == 1) {
v->len = (*h)->value.len;
v->data = (*h)->value.data;
return NGX_OK;
}
- len = (size_t) - (ssize_t) (sizeof("; ") - 1);
+ len = - (ssize_t) (sizeof("; ") - 1);
- for (i = 0; i < a->nelts; i++) {
+ for (i = 0; i < n; i++) {
len += h[i]->value.len + sizeof("; ") - 1;
}
@@ -566,7 +568,7 @@ ngx_http_variable_headers(ngx_http_request_t *r, ngx_http_variable_value_t *v,
for (i = 0; /* void */ ; i++) {
p = ngx_copy(p, h[i]->value.data, h[i]->value.len);
- if (i == a->nelts - 1) {
+ if (i == n - 1) {
break;
}