diff src/http/ngx_http_variables.c @ 667:63a820b0bc6c release-0.3.55

nginx-0.3.55-RELEASE import *) 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.
author Igor Sysoev <igor@sysoev.ru>
date Fri, 28 Jul 2006 15:16:17 +0000
parents 400711951595
children cec32b3753ac
line wrap: on
line diff
--- 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_reque
 
     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_reque
     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;
         }