Mercurial > hg > nginx-vendor-1-0
diff src/http/ngx_http_upstream.c @ 494:499474178a11 NGINX_0_7_59
nginx 0.7.59
*) Feature: the "proxy_cache_methods" and "fastcgi_cache_methods"
directives.
*) Bugfix: socket leak; the bug had appeared in 0.7.25.
Thanks to Maxim Dounin.
*) Bugfix: a segmentation fault occurred in worker process,
if a request had no body and the $request_body variable was used;
the bug had appeared in 0.7.58.
*) Bugfix: the SSL modules might not built on Solaris and Linux;
the bug had appeared in 0.7.58.
*) Bugfix: ngx_http_xslt_filter_module responses were not handled by
SSI, charset, and gzip filters.
*) Bugfix: a "charset" directive did not set a charset to
ngx_http_gzip_static_module responses.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Mon, 25 May 2009 00:00:00 +0400 |
parents | 98143f74eb3d |
children | f39b9e29530d |
line wrap: on
line diff
--- a/src/http/ngx_http_upstream.c +++ b/src/http/ngx_http_upstream.c @@ -329,6 +329,15 @@ static ngx_http_upstream_next_t ngx_htt { 0, 0 } }; + +ngx_conf_bitmask_t ngx_http_upstream_cache_method_mask[] = { + { ngx_string("GET"), NGX_HTTP_GET}, + { ngx_string("HEAD"), NGX_HTTP_HEAD }, + { ngx_string("POST"), NGX_HTTP_POST }, + { ngx_null_string, 0 } +}; + + void ngx_http_upstream_init(ngx_http_request_t *r) { @@ -532,7 +541,7 @@ ngx_http_upstream_cache(ngx_http_request ngx_int_t rc; ngx_http_cache_t *c; - if (!(r->method & (NGX_HTTP_GET|NGX_HTTP_HEAD))) { + if (!(r->method & u->conf->cache_methods)) { return NGX_DECLINED; } @@ -562,8 +571,8 @@ ngx_http_upstream_cache(ngx_http_request u->cacheable = 1; - c->min_uses = r->upstream->conf->cache_min_uses; - c->body_start = r->upstream->conf->buffer_size; + c->min_uses = u->conf->cache_min_uses; + c->body_start = u->conf->buffer_size; c->file_cache = u->conf->cache->data; rc = ngx_http_file_cache_open(r); @@ -3165,6 +3174,7 @@ ngx_http_upstream_copy_content_type(ngx_ r->headers_out.content_type_len = h->value.len; r->headers_out.content_type = h->value; + r->headers_out.content_type_lowcase = NULL; for (p = h->value.data; *p; p++) {