diff src/http/modules/proxy/ngx_http_proxy_upstream.c @ 415:3c56e834be46

nginx-0.0.10-2004-09-05-23:54:02 import
author Igor Sysoev <igor@sysoev.ru>
date Sun, 05 Sep 2004 19:54:02 +0000
parents 199cd29f35a3
children b9bd635011de
line wrap: on
line diff
--- a/src/http/modules/proxy/ngx_http_proxy_upstream.c
+++ b/src/http/modules/proxy/ngx_http_proxy_upstream.c
@@ -113,6 +113,7 @@ static ngx_chain_t *ngx_http_proxy_creat
     ngx_uint_t                       i;
     ngx_buf_t                       *b;
     ngx_chain_t                     *chain;
+    ngx_list_part_t                 *part;
     ngx_table_elt_t                 *header;
     ngx_http_request_t              *r;
     ngx_http_proxy_upstream_conf_t  *uc;
@@ -165,8 +166,20 @@ static ngx_chain_t *ngx_http_proxy_creat
     }
 
 
-    header = r->headers_in.headers.elts;
-    for (i = 0; i < r->headers_in.headers.nelts; i++) {
+    part = &r->headers_in.headers.part;
+    header = part->elts;
+
+    for (i = 0; /* void */; i++) {
+
+        if (i >= part->nelts) {
+            if (part->next == NULL) {
+                break;
+            }
+
+            part = part->next;
+            header = part->elts;
+            i = 0;
+        }
 
         if (&header[i] == r->headers_in.host) {
             continue;
@@ -274,7 +287,20 @@ static ngx_chain_t *ngx_http_proxy_creat
     }
 
 
-    for (i = 0; i < r->headers_in.headers.nelts; i++) {
+    part = &r->headers_in.headers.part;
+    header = part->elts;
+
+    for (i = 0; /* void */; i++) {
+
+        if (i >= part->nelts) {
+            if (part->next == NULL) {
+                break;
+            }
+
+            part = part->next;
+            header = part->elts;
+            i = 0;
+        }
 
         if (&header[i] == r->headers_in.host) {
             continue;