always test root existence for access_log with variables

This commit is contained in:
Igor Sysoev 2008-07-07 09:26:13 +00:00
parent 4f677fd203
commit edf1c8c1b8
5 changed files with 26 additions and 4 deletions

View file

@ -159,6 +159,8 @@ ngx_http_flv_handler(ngx_http_request_t *r)
return NGX_DECLINED;
}
r->root_tested = 1;
start = 0;
len = of.size;
i = 1;

View file

@ -175,6 +175,8 @@ ngx_http_gzip_static_handler(ngx_http_request_t *r)
#endif
r->root_tested = 1;
rc = ngx_http_discard_request_body(r);
if (rc != NGX_OK) {

View file

@ -366,7 +366,7 @@ ngx_http_log_script_write(ngx_http_request_t *r, ngx_http_log_script_t *script,
ngx_http_log_loc_conf_t *llcf;
ngx_http_core_loc_conf_t *clcf;
if (r->err_status == NGX_HTTP_NOT_FOUND) {
if (!r->root_tested) {
/* test root directory existance */
@ -387,10 +387,25 @@ ngx_http_log_script_write(ngx_http_request_t *r, ngx_http_log_script_t *script,
of.events = clcf->open_file_cache_events;
if (ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool)
!= NGX_OK
|| !of.is_dir)
!= NGX_OK)
{
/* no root directory: simulate successfull logging */
if (of.err == 0) {
/* simulate successfull logging */
return len;
}
ngx_log_error(NGX_LOG_ERR, r->connection->log, of.err,
"testing \"%s\" existence failed", path.data);
/* simulate successfull logging */
return len;
}
if (!of.is_dir) {
ngx_log_error(NGX_LOG_ERR, r->connection->log, NGX_ENOTDIR,
"testing \"%s\" existence failed", path.data);
/* simulate successfull logging */
return len;
}
}

View file

@ -140,6 +140,8 @@ ngx_http_static_handler(ngx_http_request_t *r)
return rc;
}
r->root_tested = 1;
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, log, 0, "http static fd: %d", of.fd);
if (of.is_dir) {

View file

@ -469,6 +469,7 @@ struct ngx_http_request_s {
unsigned request_output:1;
unsigned header_sent:1;
unsigned expect_tested:1;
unsigned root_tested:1;
unsigned done:1;
unsigned utf8:1;