diff src/http/modules/ngx_http_autoindex_module.c @ 78:9db7e0b5b27f NGINX_0_1_39

nginx 0.1.39 *) The changes in the ngx_http_charset_module: the "default_charset" directive was canceled; the "charset" directive sets the response charset; the "source_charset" directive sets the source charset only. *) Bugfix: the backend "WWW-Authenticate" header line did not transferred while the 401 response code redirecting. *) Bugfix: the ngx_http_proxy_module and ngx_http_fastcgi_module may close a connection before anything was transferred to a client; bug appeared in 0.1.38. *) Workaround: the Linux glibc crypt_r() initialization bug. *) Bugfix: the ngx_http_ssi_module did not support the relative URI in the "include virtual" command. *) Bugfix: if the backend response had the "Location" header line and nginx should not rewrite this line, then the 500 code response body was transferred; bug appeared in 0.1.29. *) Bugfix: some directives of the ngx_http_proxy_module and ngx_http_fastcgi_module were not inherited from the server to the location level; bug appeared in 0.1.29. *) Bugfix: the ngx_http_ssl_module did not support the certificate chain. *) Bugfix: the ngx_http_autoindex_module did not show correctly the long file names; bug appeared in 0.1.38. *) Bugfixes in IMAP/POP3 proxy in interaction with a backend at the login state.
author Igor Sysoev <http://sysoev.ru>
date Thu, 14 Jul 2005 00:00:00 +0400
parents da9a3b14312d
children 71c46860eb55
line wrap: on
line diff
--- a/src/http/modules/ngx_http_autoindex_module.c
+++ b/src/http/modules/ngx_http_autoindex_module.c
@@ -315,16 +315,16 @@ ngx_http_autoindex_handler(ngx_http_requ
 
         entry->name.len = len;        
 
-        entry->escape = 2 * ngx_escape_uri(NULL, ngx_de_name(&dir), len,
-                                           NGX_ESCAPE_HTML);
-
-        entry->name.data = ngx_palloc(pool, len + entry->escape + 1);
+        entry->name.data = ngx_palloc(pool, len + 1);
         if (entry->name.data == NULL) {
             return ngx_http_autoindex_error(r, &dir, dname.data);
         }
 
         ngx_cpystrn(entry->name.data, ngx_de_name(&dir), len + 1);
 
+        entry->escape = 2 * ngx_escape_uri(NULL, ngx_de_name(&dir), len,
+                                           NGX_ESCAPE_HTML);
+
         if (r->utf8) {
             entry->utf_len = ngx_utf_length(&entry->name);
         } else {
@@ -353,14 +353,14 @@ ngx_http_autoindex_handler(ngx_http_requ
     entry = entries.elts;
     for (i = 0; i < entries.nelts; i++) {
         len += sizeof("<a href=\"") - 1
+            + entry[i].name.len + entry[i].escape
             + 1                                          /* 1 is for "/" */
-            + entry[i].name.len + entry[i].escape
             + sizeof("\">") - 1
             + entry[i].name.len - entry[i].utf_len
             + NGX_HTTP_AUTOINDEX_NAME_LEN + sizeof("&gt;") - 2
             + sizeof("</a>") - 1
             + sizeof(" 28-Sep-1970 12:00 ") - 1
-            + 20
+            + 20                                         /* the file size */
             + 2;
     }
 
@@ -407,7 +407,7 @@ ngx_http_autoindex_handler(ngx_http_requ
 
         len = entry[i].utf_len;
 
-        if (len) {
+        if (entry[i].name.len - len) {
             if (len > NGX_HTTP_AUTOINDEX_NAME_LEN) {
                 copy = NGX_HTTP_AUTOINDEX_NAME_LEN - 3 + 1;