Mercurial > hg > nginx-quic
comparison src/http/ngx_http_file_cache.c @ 3195:b495a56f1f24
use real file cache length, this fixes cache size counting for responses
without "Content-Length" header and 304 responses.
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Wed, 07 Oct 2009 12:55:58 +0000 |
parents | 975f0558aab3 |
children | 04cfc09b8b8d |
comparison
equal
deleted
inserted
replaced
3194:9966af1d5819 | 3195:b495a56f1f24 |
---|---|
690 | 690 |
691 | 691 |
692 void | 692 void |
693 ngx_http_file_cache_update(ngx_http_request_t *r, ngx_temp_file_t *tf) | 693 ngx_http_file_cache_update(ngx_http_request_t *r, ngx_temp_file_t *tf) |
694 { | 694 { |
695 off_t size; | 695 off_t size, length; |
696 ngx_int_t rc; | 696 ngx_int_t rc; |
697 ngx_file_uniq_t uniq; | 697 ngx_file_uniq_t uniq; |
698 ngx_file_info_t fi; | 698 ngx_file_info_t fi; |
699 ngx_http_cache_t *c; | 699 ngx_http_cache_t *c; |
700 ngx_ext_rename_file_t ext; | 700 ngx_ext_rename_file_t ext; |
712 c->updated = 1; | 712 c->updated = 1; |
713 | 713 |
714 cache = c->file_cache; | 714 cache = c->file_cache; |
715 | 715 |
716 uniq = 0; | 716 uniq = 0; |
717 length = 0; | |
717 | 718 |
718 ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, | 719 ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, |
719 "http file cache rename: \"%s\" to \"%s\"", | 720 "http file cache rename: \"%s\" to \"%s\"", |
720 tf->file.name.data, c->file.name.data); | 721 tf->file.name.data, c->file.name.data); |
721 | 722 |
736 | 737 |
737 rc = NGX_ERROR; | 738 rc = NGX_ERROR; |
738 | 739 |
739 } else { | 740 } else { |
740 uniq = ngx_file_uniq(&fi); | 741 uniq = ngx_file_uniq(&fi); |
741 } | 742 length = ngx_file_size(&fi); |
742 } | 743 } |
743 | 744 } |
744 size = (c->length + cache->bsize - 1) / cache->bsize; | 745 |
746 size = (length + cache->bsize - 1) / cache->bsize; | |
745 | 747 |
746 ngx_shmtx_lock(&cache->shpool->mutex); | 748 ngx_shmtx_lock(&cache->shpool->mutex); |
747 | 749 |
748 c->node->count--; | 750 c->node->count--; |
749 c->node->uniq = uniq; | 751 c->node->uniq = uniq; |
750 c->node->body_start = c->body_start; | 752 c->node->body_start = c->body_start; |
751 | 753 |
752 size = size - (c->node->length + cache->bsize - 1) / cache->bsize; | 754 size = size - (c->node->length + cache->bsize - 1) / cache->bsize; |
753 | 755 |
754 c->node->length = c->length; | 756 c->node->length = length; |
755 | 757 |
756 cache->sh->size += size; | 758 cache->sh->size += size; |
757 | 759 |
758 if (rc == NGX_OK) { | 760 if (rc == NGX_OK) { |
759 c->node->exists = 1; | 761 c->node->exists = 1; |