summaryrefslogtreecommitdiffhomepage
path: root/src/http/modules/ngx_http_autoindex_handler.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2005-03-01 15:20:36 +0000
committerIgor Sysoev <igor@sysoev.ru>2005-03-01 15:20:36 +0000
commit11d753231beaec58401160a5dd6eb51e92e90b86 (patch)
treed8c58d101c7a3b9a0c346c5a87c697941b08c4e1 /src/http/modules/ngx_http_autoindex_handler.c
parent2cc93887121b3a755ad594efc27c590d54315374 (diff)
downloadnginx-release-0.1.23.tar.gz
nginx-release-0.1.23.tar.bz2
nginx-0.1.23-RELEASE importrelease-0.1.23
*) Feature: the ngx_http_ssi_filter_module and the ssi, ssi_silent_errors, and ssi_min_file_chunk directives. The 'echo var="HTTP_..." default=""' and 'echo var="REMOTE_ADDR"' commands are supported. *) Feature: the %request_time log parameter. *) Feature: if the request has no the "Host" header line, then the "proxy_preserve_host" directive set this header line to the first server name of the "server_name" directive. *) Bugfix: nginx could not be built on platforms different from i386, amd64, sparc, and ppc; the bug had appeared in 0.1.22. *) Bugfix: the ngx_http_autoindex_module now shows the information not about the symlink, but about file or directory it points to. *) Bugfix: the %apache_length parameter logged the negative length of the response header if the no response was transferred to a client.
Diffstat (limited to '')
-rw-r--r--src/http/modules/ngx_http_autoindex_handler.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/http/modules/ngx_http_autoindex_handler.c b/src/http/modules/ngx_http_autoindex_handler.c
index 2e555a058..f7878c9b9 100644
--- a/src/http/modules/ngx_http_autoindex_handler.c
+++ b/src/http/modules/ngx_http_autoindex_handler.c
@@ -241,7 +241,7 @@ static ngx_int_t ngx_http_autoindex_handler(ngx_http_request_t *r)
if (len == 2
&& ngx_de_name(&dir)[0] == '.'
- && ngx_de_name(&dir)[0] == '.')
+ && ngx_de_name(&dir)[1] == '.')
{
continue;
}
@@ -263,9 +263,20 @@ static ngx_int_t ngx_http_autoindex_handler(ngx_http_request_t *r)
ngx_cpystrn(last, ngx_de_name(&dir), len + 1);
if (ngx_de_info(fname.data, &dir) == NGX_FILE_ERROR) {
- ngx_log_error(NGX_LOG_CRIT, r->connection->log, ngx_errno,
- ngx_de_info_n " \"%s\" failed", fname.data);
- return ngx_http_autoindex_error(r, &dir, dname.data);
+ err = ngx_errno;
+
+ if (err != NGX_ENOENT) {
+ ngx_log_error(NGX_LOG_CRIT, r->connection->log, err,
+ ngx_de_info_n " \"%s\" failed", fname.data);
+ return ngx_http_autoindex_error(r, &dir, dname.data);
+ }
+
+ if (ngx_de_link_info(fname.data, &dir) == NGX_FILE_ERROR) {
+ ngx_log_error(NGX_LOG_CRIT, r->connection->log, ngx_errno,
+ ngx_de_link_info_n " \"%s\" failed",
+ fname.data);
+ return ngx_http_autoindex_error(r, &dir, dname.data);
+ }
}
}