Mercurial > hg > nginx
annotate src/http/modules/proxy/ngx_http_proxy_cache.c @ 172:caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 03 Nov 2003 22:20:44 +0000 |
parents | aff0e5d32af8 |
children | ea464a6c0581 |
rev | line source |
---|---|
170
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
1 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
2 #include <ngx_config.h> |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
3 #include <ngx_core.h> |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
4 #include <ngx_http.h> |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
5 #include <ngx_http_proxy_handler.h> |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
6 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
7 |
171
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
8 static int ngx_http_proxy_process_cached_header(ngx_http_proxy_ctx_t *p); |
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
9 |
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
10 |
170
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
11 int ngx_http_proxy_get_cached_response(ngx_http_proxy_ctx_t *p) |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
12 { |
171
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
13 int rc; |
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
14 char *last; |
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
15 ngx_http_request_t *r; |
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
16 ngx_http_proxy_cache_t *c; |
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
17 ngx_http_proxy_upstream_conf_t *u; |
170
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
18 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
19 r = p->request; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
20 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
21 if (!(c = ngx_pcalloc(r->pool, sizeof(ngx_http_proxy_cache_t)))) { |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
22 return NGX_HTTP_INTERNAL_SERVER_ERROR; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
23 } |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
24 |
171
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
25 p->cache = c; |
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
26 |
170
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
27 c->ctx.file.fd = NGX_INVALID_FILE; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
28 c->ctx.file.log = r->connection->log; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
29 c->ctx.path = p->lcf->cache_path; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
30 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
31 u = p->lcf->upstream; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
32 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
33 c->ctx.key.len = u->url.len + r->uri.len - u->location->len + r->args.len; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
34 if (!(c->ctx.key.data = ngx_palloc(r->pool, c->ctx.key.len + 1))) { |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
35 return NGX_HTTP_INTERNAL_SERVER_ERROR; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
36 } |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
37 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
38 last = ngx_cpymem(c->ctx.key.data, u->url.data, u->url.len); |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
39 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
40 last = ngx_cpymem(last, r->uri.data + u->location->len, |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
41 r->uri.len - u->location->len); |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
42 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
43 if (r->args.len > 0) { |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
44 *(last++) = '?'; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
45 last = ngx_cpymem(last, r->args.data, r->args.len); |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
46 } |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
47 *last = '\0'; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
48 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
49 p->header_in = ngx_create_temp_hunk(r->pool, p->lcf->header_buffer_size); |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
50 if (p->header_in == NULL) { |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
51 return NGX_HTTP_INTERNAL_SERVER_ERROR; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
52 } |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
53 p->header_in->tag = (ngx_hunk_tag_t) &ngx_http_proxy_module; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
54 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
55 c->ctx.buf = p->header_in; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
56 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
57 rc = ngx_http_cache_get_file(r, &c->ctx); |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
58 |
172
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
59 switch (rc) { |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
60 case NGX_HTTP_CACHE_STALE: |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
61 p->stale = 1; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
62 p->state->cache = NGX_HTTP_PROXY_CACHE_EXPR; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
63 break; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
64 |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
65 case NGX_HTTP_CACHE_AGED: |
171
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
66 p->stale = 1; |
172
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
67 p->state->cache = NGX_HTTP_PROXY_CACHE_AGED; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
68 break; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
69 |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
70 case NGX_OK: |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
71 p->state->cache = NGX_HTTP_PROXY_CACHE_HIT; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
72 break; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
73 |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
74 default: |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
75 p->state->cache = NGX_HTTP_PROXY_CACHE_MISS; |
171
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
76 } |
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
77 |
172
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
78 if (rc == NGX_OK |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
79 || rc == NGX_HTTP_CACHE_STALE |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
80 || rc == NGX_HTTP_CACHE_AGED) |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
81 { |
171
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
82 p->header_in->pos += c->ctx.header_size; |
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
83 if (ngx_http_proxy_process_cached_header(p) == NGX_ERROR) { |
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
84 return NGX_HTTP_INTERNAL_SERVER_ERROR; |
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
85 } |
170
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
86 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
87 } else if (rc == NGX_DECLINED) { |
171
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
88 p->header_in->pos += c->ctx.header_size; |
170
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
89 p->header_in->last = p->header_in->pos; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
90 } |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
91 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
92 return rc; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
93 } |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
94 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
95 |
171
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
96 static int ngx_http_proxy_process_cached_header(ngx_http_proxy_ctx_t *p) |
170
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
97 { |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
98 int rc, i; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
99 ngx_table_elt_t *h; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
100 ngx_http_request_t *r; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
101 ngx_http_proxy_cache_t *c; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
102 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
103 rc = ngx_http_proxy_parse_status_line(p); |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
104 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
105 c = p->cache; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
106 r = p->request; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
107 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
108 if (rc == NGX_AGAIN) { |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
109 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
110 "\"proxy_header_buffer_size\" " |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
111 "is too small to read header from \"%s\"", |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
112 c->ctx.file.name.data); |
171
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
113 return NGX_ERROR; |
170
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
114 } |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
115 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
116 if (rc == NGX_HTTP_PROXY_PARSE_NO_HEADER) { |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
117 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
118 "no valid HTTP/1.0 header in \"%s\"", |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
119 c->ctx.file.name.data); |
171
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
120 return NGX_ERROR; |
170
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
121 } |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
122 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
123 /* rc == NGX_OK */ |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
124 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
125 c->status = p->status; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
126 c->status_line.len = p->status_end - p->status_start; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
127 c->status_line.data = ngx_palloc(r->pool, c->status_line.len + 1); |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
128 if (c->status_line.data == NULL) { |
171
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
129 return NGX_ERROR; |
170
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
130 } |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
131 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
132 ngx_cpystrn(c->status_line.data, p->status_start, c->status_line.len + 1); |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
133 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
134 ngx_log_debug(r->connection->log, "http cache status %d '%s'" _ |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
135 c->status _ c->status_line.data); |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
136 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
137 c->headers_in.headers = ngx_create_table(r->pool, 20); |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
138 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
139 for ( ;; ) { |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
140 rc = ngx_http_parse_header_line(r, p->header_in); |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
141 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
142 if (rc == NGX_OK) { |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
143 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
144 /* a header line has been parsed successfully */ |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
145 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
146 h = ngx_http_add_header(&c->headers_in, ngx_http_proxy_headers_in); |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
147 if (h == NULL) { |
171
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
148 return NGX_ERROR; |
170
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
149 } |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
150 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
151 h->key.len = r->header_name_end - r->header_name_start; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
152 h->value.len = r->header_end - r->header_start; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
153 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
154 h->key.data = ngx_palloc(r->pool, |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
155 h->key.len + 1 + h->value.len + 1); |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
156 if (h->key.data == NULL) { |
171
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
157 return NGX_ERROR; |
170
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
158 } |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
159 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
160 h->value.data = h->key.data + h->key.len + 1; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
161 ngx_cpystrn(h->key.data, r->header_name_start, h->key.len + 1); |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
162 ngx_cpystrn(h->value.data, r->header_start, h->value.len + 1); |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
163 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
164 for (i = 0; ngx_http_proxy_headers_in[i].name.len != 0; i++) { |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
165 if (ngx_http_proxy_headers_in[i].name.len != h->key.len) { |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
166 continue; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
167 } |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
168 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
169 if (ngx_strcasecmp(ngx_http_proxy_headers_in[i].name.data, |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
170 h->key.data) == 0) |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
171 { |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
172 *((ngx_table_elt_t **) ((char *) &c->headers_in |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
173 + ngx_http_proxy_headers_in[i].offset)) = h; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
174 break; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
175 } |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
176 } |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
177 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
178 ngx_log_debug(r->connection->log, "HTTP cache header: '%s: %s'" _ |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
179 h->key.data _ h->value.data); |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
180 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
181 continue; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
182 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
183 } else if (rc == NGX_HTTP_PARSE_HEADER_DONE) { |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
184 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
185 /* a whole header has been parsed successfully */ |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
186 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
187 ngx_log_debug(r->connection->log, "HTTP header done"); |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
188 |
171
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
189 return NGX_OK; |
170
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
190 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
191 } else if (rc == NGX_HTTP_PARSE_INVALID_HEADER) { |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
192 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
193 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
194 "invalid header in \"%s\"", |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
195 c->ctx.file.name.data); |
171
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
196 return NGX_ERROR; |
170
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
197 } |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
198 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
199 /* rc == NGX_AGAIN || rc == NGX_HTTP_PARSE_TOO_LONG_HEADER */ |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
200 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
201 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0, |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
202 "\"proxy_header_buffer_size\" " |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
203 "is too small to read header from \"%s\"", |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
204 c->ctx.file.name.data); |
171
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
205 return NGX_ERROR; |
170
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
206 } |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
207 } |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
208 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
209 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
210 int ngx_http_proxy_send_cached_response(ngx_http_proxy_ctx_t *p) |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
211 { |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
212 int rc; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
213 ngx_hunk_t *h; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
214 ngx_chain_t out; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
215 ngx_http_request_t *r; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
216 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
217 r = p->request; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
218 |
171
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
219 r->headers_out.status = p->cache->status; |
170
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
220 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
221 #if 0 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
222 r->headers_out.content_length_n = -1; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
223 r->headers_out.content_length = NULL; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
224 #endif |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
225 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
226 /* copy an cached header to r->headers_out */ |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
227 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
228 if (ngx_http_proxy_copy_header(p, &p->cache->headers_in) == NGX_ERROR) { |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
229 return NGX_HTTP_INTERNAL_SERVER_ERROR; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
230 } |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
231 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
232 /* we need to allocate all before the header would be sent */ |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
233 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
234 if (!((h = ngx_calloc_hunk(r->pool)))) { |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
235 return NGX_HTTP_INTERNAL_SERVER_ERROR; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
236 } |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
237 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
238 if (!((h->file = ngx_pcalloc(r->pool, sizeof(ngx_file_t))))) { |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
239 return NGX_HTTP_INTERNAL_SERVER_ERROR; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
240 } |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
241 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
242 rc = ngx_http_send_header(r); |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
243 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
244 /* NEEDED ??? */ p->header_sent = 1; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
245 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
246 if (rc == NGX_ERROR || rc > NGX_OK || r->header_only) { |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
247 return rc; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
248 } |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
249 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
250 /* TODO: part in p->header_in */ |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
251 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
252 h->type = r->main ? NGX_HUNK_FILE : NGX_HUNK_FILE|NGX_HUNK_LAST; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
253 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
254 h->file_pos = p->header_in->pos - p->header_in->start; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
255 h->file_last = h->file_pos + p->cache->ctx.header.length; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
256 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
257 h->file->fd = p->cache->ctx.file.fd; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
258 h->file->log = r->connection->log; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
259 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
260 out.hunk = h; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
261 out.next = NULL; |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
262 |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
263 return ngx_http_output_filter(r, &out); |
c42be4185301
nginx-0.0.1-2003-11-03-01:56:18 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
264 } |
171
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
265 |
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
266 |
172
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
267 int ngx_http_proxy_is_cachable(ngx_http_proxy_ctx_t *p) |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
268 { |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
269 time_t date, last_modified, expires; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
270 ngx_http_proxy_headers_in_t *h; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
271 |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
272 switch (p->upstream->status) { |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
273 case NGX_HTTP_OK: |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
274 case NGX_HTTP_MOVED_PERMANENTLY: |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
275 case NGX_HTTP_MOVED_TEMPORARILY: |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
276 break; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
277 |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
278 #if 0 |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
279 case NGX_HTTP_NOT_MODIFIED: |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
280 return 1; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
281 #endif |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
282 |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
283 default: |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
284 return 0; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
285 } |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
286 |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
287 h = &p->upstream->headers_in; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
288 |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
289 date = NGX_ERROR; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
290 if (h->date) { |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
291 date = ngx_http_parse_time(h->date->value.data, h->date->value.len); |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
292 } |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
293 if (date == NGX_ERROR) { |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
294 date = ngx_time(); |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
295 } |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
296 p->cache->ctx.header.date = date; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
297 |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
298 last_modified = NGX_ERROR; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
299 if (h->last_modified) { |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
300 last_modified = ngx_http_parse_time(h->last_modified->value.data, |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
301 h->last_modified->value.len); |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
302 p->cache->ctx.header.last_modified = last_modified; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
303 } |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
304 |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
305 if (h->x_accel_expires) { |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
306 expires = ngx_atoi(h->x_accel_expires->value.data, |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
307 h->x_accel_expires->value.len); |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
308 if (expires != NGX_ERROR) { |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
309 p->state->reason = NGX_HTTP_PROXY_CACHE_XAE; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
310 p->cache->ctx.header.expires = date + expires; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
311 return (expires > 0); |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
312 } |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
313 } |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
314 |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
315 if (!p->lcf->ignore_expires) { |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
316 |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
317 /* TODO: Cache-Control: no-cache, max-age= */ |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
318 |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
319 if (h->expires) { |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
320 expires = ngx_http_parse_time(h->expires->value.data, |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
321 h->expires->value.len); |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
322 if (expires != NGX_ERROR) { |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
323 p->state->reason = NGX_HTTP_PROXY_CACHE_EXP; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
324 p->cache->ctx.header.expires = expires; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
325 return (date < expires); |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
326 } |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
327 } |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
328 } |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
329 |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
330 if (p->upstream->status == NGX_HTTP_MOVED_PERMANENTLY) { |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
331 p->state->reason = NGX_HTTP_PROXY_CACHE_MVD; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
332 p->cache->ctx.header.expires = /* STUB: 1 hour */ 60 * 60; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
333 return 1; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
334 } |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
335 |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
336 if (p->upstream->status == NGX_HTTP_MOVED_TEMPORARILY) { |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
337 return 1; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
338 } |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
339 |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
340 if (last_modified != NGX_ERROR && p->lcf->lm_factor > 0) { |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
341 |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
342 /* FIXME: time_t == int_64_t */ |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
343 |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
344 p->state->reason = NGX_HTTP_PROXY_CACHE_LMF; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
345 p->cache->ctx.header.expires = ngx_time() |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
346 + (((int64_t) (date - last_modified)) * p->lcf->lm_factor) / 100; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
347 return 1; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
348 } |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
349 |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
350 if (p->lcf->default_expires > 0) { |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
351 p->state->reason = NGX_HTTP_PROXY_CACHE_PDE; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
352 p->cache->ctx.header.expires = p->lcf->default_expires; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
353 return 1; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
354 } |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
355 |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
356 return 0; |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
357 } |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
358 |
caa57ddf6d77
nginx-0.0.1-2003-11-04-01:20:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
171
diff
changeset
|
359 |
171
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
360 int ngx_http_proxy_update_cache(ngx_http_proxy_ctx_t *p) |
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
361 { |
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
362 if (p->cache == NULL) { |
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
363 return NGX_OK; |
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
364 } |
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
365 |
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
366 return ngx_http_cache_update_file(p->request, &p->cache->ctx, |
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
367 &p->upstream->event_pipe->temp_file->file.name); |
aff0e5d32af8
nginx-0.0.1-2003-11-03-20:33:31 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
368 } |