comparison src/http/ngx_http_header_filter.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 5659d773cfa8
children b9bd635011de
comparison
equal deleted inserted replaced
414:388a842cbbe1 415:3c56e834be46
90 90
91 91
92 92
93 static ngx_int_t ngx_http_header_filter(ngx_http_request_t *r) 93 static ngx_int_t ngx_http_header_filter(ngx_http_request_t *r)
94 { 94 {
95 u_char *p; 95 u_char *p;
96 size_t len; 96 size_t len;
97 ngx_uint_t status, i; 97 ngx_uint_t status, i;
98 ngx_buf_t *b; 98 ngx_buf_t *b;
99 ngx_chain_t *ln; 99 ngx_chain_t *ln;
100 ngx_table_elt_t *header; 100 ngx_list_part_t *part;
101 ngx_table_elt_t *header;
101 102
102 if (r->http_version < NGX_HTTP_VERSION_10) { 103 if (r->http_version < NGX_HTTP_VERSION_10) {
103 return NGX_OK; 104 return NGX_OK;
104 } 105 }
105 106
203 len += sizeof("Connection: keep-alive" CRLF) - 1; 204 len += sizeof("Connection: keep-alive" CRLF) - 1;
204 } else { 205 } else {
205 len += sizeof("Connection: closed" CRLF) - 1; 206 len += sizeof("Connection: closed" CRLF) - 1;
206 } 207 }
207 208
209 part = &r->headers_out.headers.part;
210 header = part->elts;
211
212 for (i = 0; /* void */; i++) {
213
214 if (i >= part->nelts) {
215 if (part->next == NULL) {
216 break;
217 }
218
219 part = part->next;
220 header = part->elts;
221 i = 0;
222 }
223
224 #if 0
208 header = r->headers_out.headers.elts; 225 header = r->headers_out.headers.elts;
209 for (i = 0; i < r->headers_out.headers.nelts; i++) { 226 for (i = 0; i < r->headers_out.headers.nelts; i++) {
227 #endif
228
210 if (header[i].key.len == 0) { 229 if (header[i].key.len == 0) {
211 continue; 230 continue;
212 } 231 }
213 232
214 /* 2 is for ": " and 2 is for "\r\n" */ 233 /* 2 is for ": " and 2 is for "\r\n" */
319 } else { 338 } else {
320 b->last = ngx_cpymem(b->last, "Connection: close" CRLF, 339 b->last = ngx_cpymem(b->last, "Connection: close" CRLF,
321 sizeof("Connection: close" CRLF) - 1); 340 sizeof("Connection: close" CRLF) - 1);
322 } 341 }
323 342
343 part = &r->headers_out.headers.part;
344 header = part->elts;
345
346 for (i = 0; /* void */; i++) {
347
348 if (i >= part->nelts) {
349 if (part->next == NULL) {
350 break;
351 }
352
353 part = part->next;
354 header = part->elts;
355 i = 0;
356 }
357
358 #if 0
324 for (i = 0; i < r->headers_out.headers.nelts; i++) { 359 for (i = 0; i < r->headers_out.headers.nelts; i++) {
360 #endif
361
325 if (header[i].key.len == 0) { 362 if (header[i].key.len == 0) {
326 continue; 363 continue;
327 } 364 }
328 365
329 b->last = ngx_cpymem(b->last, header[i].key.data, header[i].key.len); 366 b->last = ngx_cpymem(b->last, header[i].key.data, header[i].key.len);