Cache: version in cache files.

This allows to change the structure of cache files without spamming logs
with false alerts.
This commit is contained in:
Maxim Dounin 2014-06-26 02:27:21 +04:00
parent 8f9fb9570e
commit c2e49a4196
2 changed files with 13 additions and 1 deletions

View File

@ -25,6 +25,8 @@
#define NGX_HTTP_CACHE_KEY_LEN 16
#define NGX_HTTP_CACHE_VERSION 1
typedef struct {
ngx_uint_t status;
@ -97,6 +99,7 @@ struct ngx_http_cache_s {
typedef struct {
ngx_uint_t version;
time_t valid_sec;
time_t last_modified;
time_t date;

View File

@ -498,6 +498,12 @@ ngx_http_file_cache_read(ngx_http_request_t *r, ngx_http_cache_t *c)
h = (ngx_http_file_cache_header_t *) c->buf->pos;
if (h->version != NGX_HTTP_CACHE_VERSION) {
ngx_log_error(NGX_LOG_INFO, r->connection->log, 0,
"cache file \"%s\" version mismatch", c->file.name.data);
return NGX_DECLINED;
}
if (h->crc32 != c->crc32) {
ngx_log_error(NGX_LOG_CRIT, r->connection->log, 0,
"cache file \"%s\" has md5 collision", c->file.name.data);
@ -875,6 +881,7 @@ ngx_http_file_cache_set_header(ngx_http_request_t *r, u_char *buf)
ngx_memzero(h, sizeof(ngx_http_file_cache_header_t));
h->version = NGX_HTTP_CACHE_VERSION;
h->valid_sec = c->valid_sec;
h->last_modified = c->last_modified;
h->date = c->date;
@ -1042,7 +1049,8 @@ ngx_http_file_cache_update_header(ngx_http_request_t *r)
goto done;
}
if (h.last_modified != c->last_modified
if (h.version != NGX_HTTP_CACHE_VERSION
|| h.last_modified != c->last_modified
|| h.crc32 != c->crc32
|| h.header_start != c->header_start
|| h.body_start != c->body_start)
@ -1060,6 +1068,7 @@ ngx_http_file_cache_update_header(ngx_http_request_t *r)
ngx_memzero(&h, sizeof(ngx_http_file_cache_header_t));
h.version = NGX_HTTP_CACHE_VERSION;
h.valid_sec = c->valid_sec;
h.last_modified = c->last_modified;
h.date = c->date;