aboutsummaryrefslogtreecommitdiff
path: root/src/event/ngx_event_openssl_cache.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/event/ngx_event_openssl_cache.c')
-rw-r--r--src/event/ngx_event_openssl_cache.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/event/ngx_event_openssl_cache.c b/src/event/ngx_event_openssl_cache.c
index eb03e16b2..d62b4c430 100644
--- a/src/event/ngx_event_openssl_cache.c
+++ b/src/event/ngx_event_openssl_cache.c
@@ -289,6 +289,7 @@ ngx_ssl_cache_connection_fetch(ngx_ssl_cache_t *cache, ngx_pool_t *pool,
void *value;
time_t now;
uint32_t hash;
+ ngx_uint_t invalidate;
ngx_file_info_t fi;
ngx_ssl_cache_key_t id;
ngx_ssl_cache_type_t *type;
@@ -296,6 +297,9 @@ ngx_ssl_cache_connection_fetch(ngx_ssl_cache_t *cache, ngx_pool_t *pool,
*err = NULL;
+ invalidate = index & NGX_SSL_CACHE_INVALIDATE;
+ index &= ~NGX_SSL_CACHE_INVALIDATE;
+
if (ngx_ssl_cache_init_key(pool, index, path, &id) != NGX_OK) {
return NULL;
}
@@ -319,7 +323,7 @@ ngx_ssl_cache_connection_fetch(ngx_ssl_cache_t *cache, ngx_pool_t *pool,
goto found;
}
- if (now - cn->created <= cache->valid) {
+ if (!invalidate && now - cn->created <= cache->valid) {
goto found;
}
@@ -329,7 +333,8 @@ ngx_ssl_cache_connection_fetch(ngx_ssl_cache_t *cache, ngx_pool_t *pool,
if (ngx_file_info(id.data, &fi) != NGX_FILE_ERROR) {
- if (ngx_file_uniq(&fi) == cn->uniq
+ if (!invalidate
+ && ngx_file_uniq(&fi) == cn->uniq
&& ngx_file_mtime(&fi) == cn->mtime)
{
break;