fix segfault when file is deleted and open_file_cache_errors is off

This commit is contained in:
Igor Sysoev 2008-04-29 14:39:15 +00:00
parent 1cd3b0c3db
commit 4de5124191

View File

@ -173,8 +173,6 @@ ngx_open_cached_file(ngx_open_file_cache_t *cache, ngx_str_t *name,
file->uses++; file->uses++;
ngx_queue_remove(&file->queue);
if (file->fd == NGX_INVALID_FILE && file->err == 0 && !file->is_dir) { if (file->fd == NGX_INVALID_FILE && file->err == 0 && !file->is_dir) {
/* file was not used often enough to keep open */ /* file was not used often enough to keep open */
@ -185,6 +183,8 @@ ngx_open_cached_file(ngx_open_file_cache_t *cache, ngx_str_t *name,
goto failed; goto failed;
} }
ngx_queue_remove(&file->queue);
goto add_event; goto add_event;
} }
@ -212,6 +212,8 @@ ngx_open_cached_file(ngx_open_file_cache_t *cache, ngx_str_t *name,
of->err = file->err; of->err = file->err;
} }
ngx_queue_remove(&file->queue);
goto found; goto found;
} }
@ -236,6 +238,8 @@ ngx_open_cached_file(ngx_open_file_cache_t *cache, ngx_str_t *name,
goto failed; goto failed;
} }
ngx_queue_remove(&file->queue);
if (of->is_dir) { if (of->is_dir) {
if (file->is_dir || file->err) { if (file->is_dir || file->err) {