# HG changeset patch
# User Maxim Dounin <mdounin@mdounin.ru>
# Date 1309187426 -14400
# Node ID a4ddc3c062f0eb2895888fe2cec43a82e5f9c273
# Parent d13304ce474eaf12134a67fc276fab710e8c52c3
Cache: fix 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.
diff --git a/src/http/ngx_http_file_cache.c b/src/http/ngx_http_file_cache.c
--- a/src/http/ngx_http_file_cache.c
+++ b/src/http/ngx_http_file_cache.c
@@ -860,6 +860,10 @@ ngx_http_cache_send(ngx_http_request_t *
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));
@@ -872,8 +876,6 @@ ngx_http_cache_send(ngx_http_request_t *
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) {
@@ -883,7 +885,7 @@ ngx_http_cache_send(ngx_http_request_t *
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;
_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://nginx.org/mailman/listinfo/nginx-devel