diff src/http/ngx_http_file_cache.c @ 470:6866b490272e NGINX_0_7_47

nginx 0.7.47 *) Bugfix: nginx could not be built on FreeBSD 6 and early versions; the bug had appeared in 0.7.46. *) Bugfix: nginx could not be built on MacOSX; the bug had appeared in 0.7.46. *) Bugfix: if the "max_size" parameter was set, then the cache manager might purge a whole cache; the bug had appeared in 0.7.46. *) Change: a segmentation fault might occur in worker process, if the "proxy_cache"/"fastcgi_cache" and the "proxy_cache_valid"/ "fastcgi_cache_valid" were set on different levels; the bug had appeared in 0.7.46. *) Bugfix: a segmentation fault might occur in worker process, if a request was redirected to a proxied or FastCGI server via error_page or try_files; the bug had appeared in 0.7.44.
author Igor Sysoev <http://sysoev.ru>
date Wed, 01 Apr 2009 00:00:00 +0400
parents 56baf312c1b5
children 09f0ef15d544
line wrap: on
line diff
--- a/src/http/ngx_http_file_cache.c
+++ b/src/http/ngx_http_file_cache.c
@@ -448,6 +448,7 @@ renew:
     fcn->valid_sec = 0;
     fcn->uniq = 0;
     fcn->body_start = 0;
+    fcn->length = 0;
 
 done:
 
@@ -1065,6 +1066,9 @@ ngx_http_file_cache_manager(void *data)
 
         ngx_shmtx_unlock(&cache->shpool->mutex);
 
+        ngx_log_debug1(NGX_LOG_DEBUG_HTTP, ngx_cycle->log, 0,
+                       "http file cache size: %O", size);
+
         if (size < cache->max_size) {
             return next;
         }
@@ -1290,6 +1294,10 @@ ngx_http_file_cache_valid(ngx_array_t *c
     ngx_uint_t               i;
     ngx_http_cache_valid_t  *valid;
 
+    if (cache_valid == NULL) {
+        return 0;
+    }
+
     valid = cache_valid->elts;
     for (i = 0; i < cache_valid->nelts; i++) {