diff options
author | Igor Sysoev <igor@sysoev.ru> | 2006-07-28 15:16:17 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2006-07-28 15:16:17 +0000 |
commit | 8f1255877c4b64f83fce75baa4d903797e00e815 (patch) | |
tree | e6594c2c4578b85fa81c4a5fe334daac91142a6f /src/http/ngx_http_variables.c | |
parent | 741c6e9c1ecd17d2165f2e8e3426023117f4b15d (diff) | |
download | nginx-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.c | 16 |
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; } |