comparison src/http/modules/ngx_http_header_filter.c @ 1:d220029ac7f3

nginx-0.0.1-2002-08-15-21:20:26 import
author Igor Sysoev <igor@sysoev.ru>
date Thu, 15 Aug 2002 17:20:26 +0000
parents
children ffffe1499bce
comparison
equal deleted inserted replaced
0:4eff17414a43 1:d220029ac7f3
1
2
3 typedef struct {
4 int len;
5 char *line;
6 } line;
7
8
9 static line http_codes[] = {
10 { 6, "200 OK" }
11 };
12
13
14
15
16 int ngx_http_header_filter(ngx_http_request_t *r)
17 {
18 int status;
19 ngx_hunk_t *h;
20
21 ngx_test_null(h, ngx_get_hunk(r->pool, 1024, 0, 64), NGX_HTTP_FILTER_ERROR);
22
23 status = r->headers_out->status - GX_HTTP_OK;
24
25 ngx_memcpy(h->pos.mem, "HTTP/1.0 ", 9);
26 h->pos.mem += 9;
27 ngx_memcpy(h->pos.mem, http_codes[status].line, http_codes[status].len);
28 h->pos.mem += http_codes[status].len;
29 *(h->pos.mem++) = CR; *(h->pos.mem++) = LF;
30
31 memcpy(h->pos.mem, "Date: ", 6);
32 h->pos.mem += 6;
33 h->pos.mem += ngx_http_get_time(h->pos.mem, time());
34 *(h->pos.mem++) = CR; *(h->pos.mem++) = LF;
35
36 /* 2^64 is 20 characters */
37 if (r->headers_out->content_length)
38 h->pos.mem += ngx_snprintf(h->pos.mem, 49, "Content-Length: %d" CRLF,
39 r->headers_out->content_length);
40
41 /* check */
42
43 memcpy(h->pos.mem, "Server: ", 8);
44 h->pos.mem += 8;
45 if (r->headers_out->server) {
46 h->pos.mem = ngx_cpystrn(h->pos.mem, r->headers_out->server,
47 h->last.mem - h->pos.mem);
48 check space
49 } else {
50 ngx_memcpy(h->pos.mem, NGINX_VER, sizeof(NGINX_VER));
51 h->pos.mem += sizeof(NGINX_VER);
52 }
53 *(h->pos.mem++) = CR; *(h->pos.mem++) = LF;
54
55 }