summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMaxim Dounin <mdounin@mdounin.ru>2011-09-27 11:15:35 +0000
committerMaxim Dounin <mdounin@mdounin.ru>2011-09-27 11:15:35 +0000
commit84c58a30e63fca6a509127fe046bd00a4b290135 (patch)
tree8fac1817b7042b2f31e86941460c3a3ce0a0d6dd
parent4a3884ae56cae78db8746ed7fbdce97554ee368f (diff)
downloadnginx-84c58a30e63fca6a509127fe046bd00a4b290135.tar.gz
nginx-84c58a30e63fca6a509127fe046bd00a4b290135.tar.bz2
Cache: fix for sending of empty responses.
Revert wrong fix for empty responses introduced in 0.8.31 and apply new one, rewritten to match things done by static module as close as possible.
-rw-r--r--src/http/ngx_http_file_cache.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/http/ngx_http_file_cache.c b/src/http/ngx_http_file_cache.c
index d87f78540..f212d6c6c 100644
--- a/src/http/ngx_http_file_cache.c
+++ b/src/http/ngx_http_file_cache.c
@@ -853,6 +853,10 @@ ngx_http_cache_send(ngx_http_request_t *r)
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"http file cache send: %s", c->file.name.data);
+ if (r != r->main && c->length - c->body_start == 0) {
+ return ngx_http_send_header(r);
+ }
+
/* we need to allocate all before the header would be sent */
b = ngx_pcalloc(r->pool, sizeof(ngx_buf_t));
@@ -865,8 +869,6 @@ ngx_http_cache_send(ngx_http_request_t *r)
return NGX_HTTP_INTERNAL_SERVER_ERROR;
}
- r->header_only = (c->length - c->body_start) == 0;
-
rc = ngx_http_send_header(r);
if (rc == NGX_ERROR || rc > NGX_OK || r->header_only) {
@@ -876,7 +878,7 @@ ngx_http_cache_send(ngx_http_request_t *r)
b->file_pos = c->body_start;
b->file_last = c->length;
- b->in_file = 1;
+ b->in_file = (c->length - c->body_start) ? 1: 0;
b->last_buf = (r == r->main) ? 1: 0;
b->last_in_chain = 1;