Autoindex: improved ngx_de_info() error handling. This allows to build a directory listing whenever a loop exists in symbolic link resolution of the path argument.
diff --git a/src/http/modules/ngx_http_autoindex_module.c b/src/http/modules/ngx_http_autoindex_module.c index e21d8d7..2214551 100644 --- a/src/http/modules/ngx_http_autoindex_module.c +++ b/src/http/modules/ngx_http_autoindex_module.c
@@ -304,7 +304,7 @@ if (ngx_de_info(filename, &dir) == NGX_FILE_ERROR) { err = ngx_errno; - if (err != NGX_ENOENT) { + if (err != NGX_ENOENT && err != NGX_ELOOP) { ngx_log_error(NGX_LOG_CRIT, r->connection->log, err, ngx_de_info_n " \"%s\" failed", filename);
diff --git a/src/os/unix/ngx_errno.h b/src/os/unix/ngx_errno.h index 125087e..1497c5f 100644 --- a/src/os/unix/ngx_errno.h +++ b/src/os/unix/ngx_errno.h
@@ -49,10 +49,10 @@ #define NGX_ECANCELED ECANCELED #define NGX_EILSEQ EILSEQ #define NGX_ENOMOREFILES 0 +#define NGX_ELOOP ELOOP #if (NGX_HAVE_OPENAT) #define NGX_EMLINK EMLINK -#define NGX_ELOOP ELOOP #endif #if (__hpux__)
diff --git a/src/os/win32/ngx_errno.h b/src/os/win32/ngx_errno.h index 090ba1b..decb6fe 100644 --- a/src/os/win32/ngx_errno.h +++ b/src/os/win32/ngx_errno.h
@@ -51,6 +51,7 @@ #define NGX_EHOSTUNREACH WSAEHOSTUNREACH #define NGX_ENOMOREFILES ERROR_NO_MORE_FILES #define NGX_EILSEQ ERROR_NO_UNICODE_TRANSLATION +#define NGX_ELOOP 0 #define NGX_EALREADY WSAEALREADY #define NGX_EINVAL WSAEINVAL