Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- diff -rupN /home/wandenberg/Downloads/nginx/nginx-1.0.10/src/http/modules/ngx_http_fastcgi_module.c /usr/local/nginxpushstream/source/nginx-1.0.10/src/http/modules/ngx_http_fastcgi_module.c
- --- /home/wandenberg/Downloads/nginx/nginx-1.0.10/src/http/modules/ngx_http_fastcgi_module.c 2011-09-30 11:18:58.000000000 -0300
- +++ /usr/local/nginxpushstream/source/nginx-1.0.10/src/http/modules/ngx_http_fastcgi_module.c 2011-11-29 13:25:05.024900001 -0200
- @@ -28,6 +28,7 @@ typedef struct {
- #if (NGX_HTTP_CACHE)
- ngx_http_complex_value_t cache_key;
- + ngx_http_complex_value_t cache_group_key;
- #endif
- #if (NGX_PCRE)
- @@ -317,7 +318,7 @@ static ngx_command_t ngx_http_fastcgi_c
- NULL },
- { ngx_string("fastcgi_cache_key"),
- - NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
- + NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE12,
- ngx_http_fastcgi_cache_key,
- NGX_HTTP_LOC_CONF_OFFSET,
- 0,
- @@ -678,6 +679,17 @@ ngx_http_fastcgi_create_key(ngx_http_req
- return NGX_ERROR;
- }
- + if (flcf->cache_group_key.value.len) {
- + key = ngx_array_push(&r->cache->group_keys);
- + if (key == NULL) {
- + return NGX_ERROR;
- + }
- +
- + if (ngx_http_complex_value(r, &flcf->cache_group_key, key) != NGX_OK) {
- + return NGX_ERROR;
- + }
- + }
- +
- return NGX_OK;
- }
- @@ -2818,7 +2830,7 @@ ngx_http_fastcgi_cache_key(ngx_conf_t *c
- ngx_http_fastcgi_loc_conf_t *flcf = conf;
- ngx_str_t *value;
- - ngx_http_compile_complex_value_t ccv;
- + ngx_http_compile_complex_value_t ccv, group_ccv;
- value = cf->args->elts;
- @@ -2836,6 +2848,19 @@ ngx_http_fastcgi_cache_key(ngx_conf_t *c
- return NGX_CONF_ERROR;
- }
- + if (cf->args->nelts > 2) {
- + /* set proxy_cache_group_key part */
- + ngx_memzero(&group_ccv, sizeof(ngx_http_compile_complex_value_t));
- +
- + group_ccv.cf = cf;
- + group_ccv.value = &value[2];
- + group_ccv.complex_value = &flcf->cache_group_key;
- +
- + if (ngx_http_compile_complex_value(&group_ccv) != NGX_OK) {
- + return NGX_CONF_ERROR;
- + }
- + }
- +
- return NGX_CONF_OK;
- }
- diff -rupN /home/wandenberg/Downloads/nginx/nginx-1.0.10/src/http/modules/ngx_http_proxy_module.c /usr/local/nginxpushstream/source/nginx-1.0.10/src/http/modules/ngx_http_proxy_module.c
- --- /home/wandenberg/Downloads/nginx/nginx-1.0.10/src/http/modules/ngx_http_proxy_module.c 2011-09-30 10:42:59.000000000 -0300
- +++ /usr/local/nginxpushstream/source/nginx-1.0.10/src/http/modules/ngx_http_proxy_module.c 2011-11-29 13:25:01.614900001 -0200
- @@ -65,6 +65,7 @@ typedef struct {
- #if (NGX_HTTP_CACHE)
- ngx_http_complex_value_t cache_key;
- + ngx_http_complex_value_t cache_group_key;
- #endif
- ngx_http_proxy_vars_t vars;
- @@ -326,7 +327,7 @@ static ngx_command_t ngx_http_proxy_com
- NULL },
- { ngx_string("proxy_cache_key"),
- - NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
- + NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE12,
- ngx_http_proxy_cache_key,
- NGX_HTTP_LOC_CONF_OFFSET,
- 0,
- @@ -749,6 +750,17 @@ ngx_http_proxy_create_key(ngx_http_reque
- ctx = ngx_http_get_module_ctx(r, ngx_http_proxy_module);
- + if (plcf->cache_group_key.value.len) {
- + key = ngx_array_push(&r->cache->group_keys);
- + if (key == NULL) {
- + return NGX_ERROR;
- + }
- +
- + if (ngx_http_complex_value(r, &plcf->cache_group_key, key) != NGX_OK) {
- + return NGX_ERROR;
- + }
- + }
- +
- key = ngx_array_push(&r->cache->keys);
- if (key == NULL) {
- return NGX_ERROR;
- @@ -2689,7 +2701,7 @@ ngx_http_proxy_cache_key(ngx_conf_t *cf,
- ngx_http_proxy_loc_conf_t *plcf = conf;
- ngx_str_t *value;
- - ngx_http_compile_complex_value_t ccv;
- + ngx_http_compile_complex_value_t ccv, group_ccv;
- value = cf->args->elts;
- @@ -2707,6 +2719,19 @@ ngx_http_proxy_cache_key(ngx_conf_t *cf,
- return NGX_CONF_ERROR;
- }
- + if (cf->args->nelts > 2) {
- + /* set proxy_cache_group_key part */
- + ngx_memzero(&group_ccv, sizeof(ngx_http_compile_complex_value_t));
- +
- + group_ccv.cf = cf;
- + group_ccv.value = &value[2];
- + group_ccv.complex_value = &plcf->cache_group_key;
- +
- + if (ngx_http_compile_complex_value(&group_ccv) != NGX_OK) {
- + return NGX_CONF_ERROR;
- + }
- + }
- +
- return NGX_CONF_OK;
- }
- diff -rupN /home/wandenberg/Downloads/nginx/nginx-1.0.10/src/http/modules/ngx_http_scgi_module.c /usr/local/nginxpushstream/source/nginx-1.0.10/src/http/modules/ngx_http_scgi_module.c
- --- /home/wandenberg/Downloads/nginx/nginx-1.0.10/src/http/modules/ngx_http_scgi_module.c 2011-11-01 12:04:23.000000000 -0200
- +++ /usr/local/nginxpushstream/source/nginx-1.0.10/src/http/modules/ngx_http_scgi_module.c 2011-11-28 18:54:19.286253001 -0200
- @@ -26,6 +26,7 @@ typedef struct {
- #if (NGX_HTTP_CACHE)
- ngx_http_complex_value_t cache_key;
- + ngx_http_complex_value_t cache_group_key;
- #endif
- } ngx_http_scgi_loc_conf_t;
- @@ -190,7 +191,7 @@ static ngx_command_t ngx_http_scgi_comma
- NULL },
- { ngx_string("scgi_cache_key"),
- - NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
- + NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE12,
- ngx_http_scgi_cache_key,
- NGX_HTTP_LOC_CONF_OFFSET,
- 0,
- @@ -507,6 +508,17 @@ ngx_http_scgi_create_key(ngx_http_reques
- return NGX_ERROR;
- }
- + if (scf->cache_group_key.value.len) {
- + key = ngx_array_push(&r->cache->group_keys);
- + if (key == NULL) {
- + return NGX_ERROR;
- + }
- +
- + if (ngx_http_complex_value(r, &scf->cache_group_key, key) != NGX_OK) {
- + return NGX_ERROR;
- + }
- + }
- +
- return NGX_OK;
- }
- @@ -1651,7 +1663,7 @@ ngx_http_scgi_cache_key(ngx_conf_t *cf,
- ngx_http_scgi_loc_conf_t *scf = conf;
- ngx_str_t *value;
- - ngx_http_compile_complex_value_t ccv;
- + ngx_http_compile_complex_value_t ccv, group_ccv;
- value = cf->args->elts;
- @@ -1669,6 +1681,19 @@ ngx_http_scgi_cache_key(ngx_conf_t *cf,
- return NGX_CONF_ERROR;
- }
- + if (cf->args->nelts > 2) {
- + /* set proxy_cache_group_key part */
- + ngx_memzero(&group_ccv, sizeof(ngx_http_compile_complex_value_t));
- +
- + group_ccv.cf = cf;
- + group_ccv.value = &value[2];
- + group_ccv.complex_value = &scf->cache_group_key;
- +
- + if (ngx_http_compile_complex_value(&group_ccv) != NGX_OK) {
- + return NGX_CONF_ERROR;
- + }
- + }
- +
- return NGX_CONF_OK;
- }
- diff -rupN /home/wandenberg/Downloads/nginx/nginx-1.0.10/src/http/modules/ngx_http_uwsgi_module.c /usr/local/nginxpushstream/source/nginx-1.0.10/src/http/modules/ngx_http_uwsgi_module.c
- --- /home/wandenberg/Downloads/nginx/nginx-1.0.10/src/http/modules/ngx_http_uwsgi_module.c 2011-11-01 12:04:23.000000000 -0200
- +++ /usr/local/nginxpushstream/source/nginx-1.0.10/src/http/modules/ngx_http_uwsgi_module.c 2011-11-29 13:24:53.934900001 -0200
- @@ -27,6 +27,7 @@ typedef struct {
- #if (NGX_HTTP_CACHE)
- ngx_http_complex_value_t cache_key;
- + ngx_http_complex_value_t cache_group_key;
- #endif
- ngx_str_t uwsgi_string;
- @@ -217,7 +218,7 @@ static ngx_command_t ngx_http_uwsgi_comm
- NULL },
- { ngx_string("uwsgi_cache_key"),
- - NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
- + NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE12,
- ngx_http_uwsgi_cache_key,
- NGX_HTTP_LOC_CONF_OFFSET,
- 0,
- @@ -540,6 +541,17 @@ ngx_http_uwsgi_create_key(ngx_http_reque
- return NGX_ERROR;
- }
- + if (uwcf->cache_group_key.value.len) {
- + key = ngx_array_push(&r->cache->group_keys);
- + if (key == NULL) {
- + return NGX_ERROR;
- + }
- +
- + if (ngx_http_complex_value(r, &uwcf->cache_group_key, key) != NGX_OK) {
- + return NGX_ERROR;
- + }
- + }
- +
- return NGX_OK;
- }
- @@ -1703,7 +1715,7 @@ ngx_http_uwsgi_cache_key(ngx_conf_t *cf,
- ngx_http_uwsgi_loc_conf_t *uwcf = conf;
- ngx_str_t *value;
- - ngx_http_compile_complex_value_t ccv;
- + ngx_http_compile_complex_value_t ccv, group_ccv;
- value = cf->args->elts;
- @@ -1721,6 +1733,19 @@ ngx_http_uwsgi_cache_key(ngx_conf_t *cf,
- return NGX_CONF_ERROR;
- }
- + if (cf->args->nelts > 2) {
- + /* set proxy_cache_group_key part */
- + ngx_memzero(&group_ccv, sizeof(ngx_http_compile_complex_value_t));
- +
- + group_ccv.cf = cf;
- + group_ccv.value = &value[2];
- + group_ccv.complex_value = &uwcf->cache_group_key;
- +
- + if (ngx_http_compile_complex_value(&group_ccv) != NGX_OK) {
- + return NGX_CONF_ERROR;
- + }
- + }
- +
- return NGX_CONF_OK;
- }
- diff -rupN /home/wandenberg/Downloads/nginx/nginx-1.0.10/src/http/ngx_http_cache.h /usr/local/nginxpushstream/source/nginx-1.0.10/src/http/ngx_http_cache.h
- --- /home/wandenberg/Downloads/nginx/nginx-1.0.10/src/http/ngx_http_cache.h 2011-04-22 07:06:43.000000000 -0300
- +++ /usr/local/nginxpushstream/source/nginx-1.0.10/src/http/ngx_http_cache.h 2011-11-28 18:33:09.966253003 -0200
- @@ -36,6 +36,7 @@ typedef struct {
- u_char key[NGX_HTTP_CACHE_KEY_LEN
- - sizeof(ngx_rbtree_key_t)];
- + u_char group_key[NGX_HTTP_CACHE_KEY_LEN];
- unsigned count:20;
- unsigned uses:10;
- @@ -57,8 +58,10 @@ typedef struct {
- struct ngx_http_cache_s {
- ngx_file_t file;
- ngx_array_t keys;
- + ngx_array_t group_keys;
- uint32_t crc32;
- u_char key[NGX_HTTP_CACHE_KEY_LEN];
- + u_char group_key[NGX_HTTP_CACHE_KEY_LEN];
- ngx_file_uniq_t uniq;
- time_t valid_sec;
- @@ -134,6 +137,7 @@ void ngx_http_file_cache_update(ngx_http
- ngx_int_t ngx_http_cache_send(ngx_http_request_t *);
- void ngx_http_file_cache_free(ngx_http_cache_t *c, ngx_temp_file_t *tf);
- time_t ngx_http_file_cache_valid(ngx_array_t *cache_valid, ngx_uint_t status);
- +ngx_int_t ngx_http_file_cache_group_clean(ngx_http_file_cache_t *cache, u_char *group_key);
- char *ngx_http_file_cache_set_slot(ngx_conf_t *cf, ngx_command_t *cmd,
- void *conf);
- diff -rupN /home/wandenberg/Downloads/nginx/nginx-1.0.10/src/http/ngx_http_file_cache.c /usr/local/nginxpushstream/source/nginx-1.0.10/src/http/ngx_http_file_cache.c
- --- /home/wandenberg/Downloads/nginx/nginx-1.0.10/src/http/ngx_http_file_cache.c 2011-11-01 11:49:31.000000000 -0200
- +++ /usr/local/nginxpushstream/source/nginx-1.0.10/src/http/ngx_http_file_cache.c 2011-11-29 17:00:18.314900002 -0200
- @@ -4,6 +4,7 @@
- */
- +#include <nginx.h>
- #include <ngx_config.h>
- #include <ngx_core.h>
- #include <ngx_http.h>
- @@ -21,6 +22,8 @@ static ngx_int_t ngx_http_file_cache_exi
- ngx_http_cache_t *c);
- static ngx_int_t ngx_http_file_cache_name(ngx_http_request_t *r,
- ngx_path_t *path);
- +static ngx_int_t ngx_http_file_cache_fullname(ngx_str_t *fullname,
- + ngx_path_t *path, u_char *key, u_char *group_key);
- static ngx_http_file_cache_node_t *
- ngx_http_file_cache_lookup(ngx_http_file_cache_t *cache, u_char *key);
- static void ngx_http_file_cache_rbtree_insert_value(ngx_rbtree_node_t *temp,
- @@ -43,6 +46,12 @@ static ngx_int_t ngx_http_file_cache_add
- static ngx_int_t ngx_http_file_cache_delete_file(ngx_tree_ctx_t *ctx,
- ngx_str_t *path);
- +static ngx_int_t ngx_http_file_cache_purge_file(ngx_tree_ctx_t *ctx,
- + ngx_str_t *path);
- +
- +static ngx_int_t ngx_http_file_cache_purge_dir(ngx_tree_ctx_t *ctx,
- + ngx_str_t *path);
- +
- ngx_str_t ngx_http_cache_status[] = {
- ngx_string("MISS"),
- @@ -159,6 +168,10 @@ ngx_http_file_cache_new(ngx_http_request
- return NGX_ERROR;
- }
- + if (ngx_array_init(&c->group_keys, r->pool, 4, sizeof(ngx_str_t)) != NGX_OK) {
- + return NGX_ERROR;
- + }
- +
- r->cache = c;
- c->file.log = r->connection->log;
- c->file.fd = NGX_INVALID_FILE;
- @@ -229,6 +242,24 @@ ngx_http_file_cache_create_key(ngx_http_
- ngx_crc32_final(c->crc32);
- ngx_md5_final(c->key, &md5);
- +
- + ngx_memset(c->group_key, '\0', NGX_HTTP_CACHE_KEY_LEN);
- + if (c->group_keys.nelts > 0) {
- + ngx_md5_init(&md5);
- +
- + key = c->group_keys.elts;
- + for (i = 0; i < c->group_keys.nelts; i++) {
- + ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
- + "http cache group key: \"%V\"", &key[i]);
- +
- + len += key[i].len;
- +
- + ngx_md5_update(&md5, key[i].data, key[i].len);
- + }
- +
- + ngx_md5_final(c->group_key, &md5);
- + }
- +
- }
- @@ -610,33 +641,197 @@ failed:
- static ngx_int_t
- ngx_http_file_cache_name(ngx_http_request_t *r, ngx_path_t *path)
- {
- - u_char *p;
- + ngx_str_t buf;
- ngx_http_cache_t *c;
- c = r->cache;
- - c->file.name.len = path->name.len + 1 + path->len
- - + 2 * NGX_HTTP_CACHE_KEY_LEN;
- + if (ngx_http_file_cache_fullname(&buf, path, c->key, c->group_key) != NGX_OK) {
- + return NGX_ERROR;
- + }
- +
- + c->file.name.len = buf.len;
- c->file.name.data = ngx_pnalloc(r->pool, c->file.name.len + 1);
- if (c->file.name.data == NULL) {
- return NGX_ERROR;
- }
- - ngx_memcpy(c->file.name.data, path->name.data, path->name.len);
- + ngx_memcpy(c->file.name.data, buf.data, buf.len);
- + c->file.name.data[c->file.name.len] = '\0';
- - p = c->file.name.data + path->name.len + 1 + path->len;
- - p = ngx_hex_dump(p, c->key, NGX_HTTP_CACHE_KEY_LEN);
- + ngx_free(buf.data);
- +
- + return NGX_OK;
- +}
- +
- +
- +static ngx_int_t
- +ngx_http_file_cache_fullname(ngx_str_t *fullname, ngx_path_t *path, u_char *key, u_char *group_key)
- +{
- + u_char *p, *last;
- + ngx_str_t buf;
- + size_t len = 0;
- + ngx_flag_t has_group_key = 0;
- +
- + len = path->name.len + 1 + path->len + 2 * NGX_HTTP_CACHE_KEY_LEN;
- +
- + buf.len = len;
- + buf.data = ngx_alloc(len + 1, ngx_cycle->log);
- + if (buf.data == NULL) {
- + return NGX_ERROR;
- + }
- +
- + if ((group_key != NULL) && (group_key[0] != '\0')) {
- + len += 1 + path->len + 2 * NGX_HTTP_CACHE_KEY_LEN;
- + has_group_key = 1;
- + }
- +
- + fullname->len = len;
- + fullname->data = ngx_alloc(len + 1, ngx_cycle->log);
- +
- + if (fullname->data == NULL) {
- + ngx_free(buf.data);
- + return NGX_ERROR;
- + }
- +
- + ngx_memcpy(buf.data, path->name.data, path->name.len);
- + last = ngx_copy(fullname->data, path->name.data, path->name.len);
- +
- + if (has_group_key) {
- + p = buf.data + path->name.len + 1 + path->len;
- + p = ngx_hex_dump(p, group_key, NGX_HTTP_CACHE_KEY_LEN);
- + *p = '\0';
- +
- + ngx_create_hashed_filename(path, buf.data, buf.len);
- + last = ngx_copy(last, buf.data + path->name.len, buf.len - path->name.len);
- + }
- +
- + p = buf.data + path->name.len + 1 + path->len;
- + p = ngx_hex_dump(p, key, NGX_HTTP_CACHE_KEY_LEN);
- *p = '\0';
- - ngx_create_hashed_filename(path, c->file.name.data, c->file.name.len);
- + ngx_create_hashed_filename(path, buf.data, buf.len);
- + last = ngx_copy(last, buf.data + path->name.len, buf.len - path->name.len);
- + *last = '\0';
- - ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
- - "cache file: \"%s\"", c->file.name.data);
- + ngx_log_debug1(NGX_LOG_DEBUG_HTTP, ngx_cycle->log, 0,
- + "cache file: \"%s\"", fullname->data);
- +
- + ngx_free(buf.data);
- return NGX_OK;
- }
- +
- +ngx_int_t
- +ngx_http_file_cache_group_clean(ngx_http_file_cache_t *cache, u_char *group_key)
- +{
- + ngx_tree_ctx_t tree;
- + ngx_path_t *path;
- + ngx_str_t name;
- + u_char *p;
- + ngx_int_t rc;
- + ngx_dir_t dir;
- +
- + if ((group_key == NULL) || (group_key[0] == '\0')) {
- + return NGX_ERROR;
- + }
- +
- + path = cache->path;
- + name.len = path->name.len + 1 + path->len + 2 * NGX_HTTP_CACHE_KEY_LEN;
- + name.data = ngx_alloc(name.len + 1, ngx_cycle->log);
- + if (name.data == NULL) {
- + return NGX_ERROR;
- + }
- +
- + ngx_memcpy(name.data, path->name.data, path->name.len);
- + p = name.data + path->name.len + 1 + path->len;
- + p = ngx_hex_dump(p, group_key, NGX_HTTP_CACHE_KEY_LEN);
- + *p = '\0';
- +
- + ngx_create_hashed_filename(path, name.data, name.len);
- +
- + /* check if group directory exists */
- + if (ngx_open_dir(&name, &dir) == NGX_ERROR) {
- + return NGX_DECLINED;
- + }
- +
- + ngx_close_dir(&dir);
- +
- +
- + tree.init_handler = NULL;
- + tree.file_handler = ngx_http_file_cache_purge_file;
- + tree.pre_tree_handler = ngx_http_file_cache_noop;
- + tree.post_tree_handler = ngx_http_file_cache_purge_dir;
- + tree.spec_handler = ngx_http_file_cache_delete_file;
- + tree.data = cache;
- + tree.alloc = 0;
- + tree.log = ngx_cycle->log;
- +
- + ngx_log_debug1(NGX_LOG_DEBUG_HTTP, ngx_cycle->log, 0,
- + "cleaning group: \"%s\"", name.data);
- +
- + rc = ngx_walk_tree(&tree, &name);
- +
- + ngx_http_file_cache_purge_dir(&tree, &name);
- +
- + ngx_free(name.data);
- +
- + return rc;
- +}
- +
- +
- +static ngx_int_t
- +ngx_http_file_cache_purge_file(ngx_tree_ctx_t *ctx, ngx_str_t *path)
- +{
- + ngx_http_file_cache_t *cache;
- + u_char key[NGX_HTTP_CACHE_KEY_LEN];
- + ngx_http_file_cache_node_t *fcn;
- +
- + cache = ctx->data;
- +
- + ngx_shmtx_lock(&cache->shpool->mutex);
- +
- + fcn = ngx_http_file_cache_lookup(cache, key);
- +
- + if ((fcn != NULL) && fcn->exists) {
- +# if defined(nginx_version) && (nginx_version >= 1000001)
- + cache->sh->size -= fcn->fs_size;
- +# else
- + cache->sh->size -= (fcn->length + cache->bsize - 1) / cache->bsize;
- +# endif
- +
- + fcn->exists = 0;
- +# if defined(nginx_version) \
- + && ((nginx_version >= 8001) \
- + || ((nginx_version < 8000) && (nginx_version >= 7060)))
- + fcn->updating = 0;
- +# endif
- +
- + }
- +
- + ngx_shmtx_unlock(&cache->shpool->mutex);
- +
- + ngx_http_file_cache_delete_file(ctx, path);
- +
- + return NGX_OK;
- +}
- +
- +
- +static ngx_int_t
- +ngx_http_file_cache_purge_dir(ngx_tree_ctx_t *ctx, ngx_str_t *path)
- +{
- + ngx_log_debug1(NGX_LOG_DEBUG_HTTP, ngx_cycle->log, 0,
- + "delete dir: \"%V\"", path);
- +
- + if (ngx_delete_dir(path->data) == NGX_FILE_ERROR) {
- + ngx_log_error(NGX_LOG_CRIT, ngx_cycle->log, ngx_errno,
- + ngx_delete_dir_n " \"%s\" failed", path->data);
- + }
- + return NGX_OK;
- +}
- +
- static ngx_http_file_cache_node_t *
- ngx_http_file_cache_lookup(ngx_http_file_cache_t *cache, u_char *key)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement