# HG changeset patch # User Sergey Kandaurov # Date 1375170201 -14400 # Node ID e8bca839762561e34c7c36f5b5398fe361e5cd82 # Parent 1a9700ef9725933f6b98d47dd9966532c4c250eb 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 -r 1a9700ef9725 -r e8bca8397625 src/http/modules/ngx_http_autoindex_module.c --- a/src/http/modules/ngx_http_autoindex_module.c Tue Jul 30 11:43:21 2013 +0400 +++ b/src/http/modules/ngx_http_autoindex_module.c Tue Jul 30 11:43:21 2013 +0400 @@ -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 -r 1a9700ef9725 -r e8bca8397625 src/os/unix/ngx_errno.h --- a/src/os/unix/ngx_errno.h Tue Jul 30 11:43:21 2013 +0400 +++ b/src/os/unix/ngx_errno.h Tue Jul 30 11:43:21 2013 +0400 @@ -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 -r 1a9700ef9725 -r e8bca8397625 src/os/win32/ngx_errno.h --- a/src/os/win32/ngx_errno.h Tue Jul 30 11:43:21 2013 +0400 +++ b/src/os/win32/ngx_errno.h Tue Jul 30 11:43:21 2013 +0400 @@ -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