Mercurial > hg > nginx
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); |