always test root existence for access_log with variables
diff --git a/src/http/modules/ngx_http_flv_module.c b/src/http/modules/ngx_http_flv_module.c
index a8239f1..235ccdd 100644
--- a/src/http/modules/ngx_http_flv_module.c
+++ b/src/http/modules/ngx_http_flv_module.c
@@ -159,6 +159,8 @@
return NGX_DECLINED;
}
+ r->root_tested = 1;
+
start = 0;
len = of.size;
i = 1;
diff --git a/src/http/modules/ngx_http_gzip_static_module.c b/src/http/modules/ngx_http_gzip_static_module.c
index 41ac0d3..51fe0d5 100644
--- a/src/http/modules/ngx_http_gzip_static_module.c
+++ b/src/http/modules/ngx_http_gzip_static_module.c
@@ -175,6 +175,8 @@
#endif
+ r->root_tested = 1;
+
rc = ngx_http_discard_request_body(r);
if (rc != NGX_OK) {
diff --git a/src/http/modules/ngx_http_log_module.c b/src/http/modules/ngx_http_log_module.c
index ce75597..5b8adc5 100644
--- a/src/http/modules/ngx_http_log_module.c
+++ b/src/http/modules/ngx_http_log_module.c
@@ -366,7 +366,7 @@
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 @@
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;
}
}
diff --git a/src/http/modules/ngx_http_static_module.c b/src/http/modules/ngx_http_static_module.c
index f5d6971..ce2f0fc 100644
--- a/src/http/modules/ngx_http_static_module.c
+++ b/src/http/modules/ngx_http_static_module.c
@@ -140,6 +140,8 @@
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) {
diff --git a/src/http/ngx_http_request.h b/src/http/ngx_http_request.h
index 1a4eae1..be22db6 100644
--- a/src/http/ngx_http_request.h
+++ b/src/http/ngx_http_request.h
@@ -469,6 +469,7 @@
unsigned request_output:1;
unsigned header_sent:1;
unsigned expect_tested:1;
+ unsigned root_tested:1;
unsigned done:1;
unsigned utf8:1;