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;