Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev ][Date Next ][Thread Prev ][Thread Next ][Date Index ][Thread Index ]
Re: nginx-0.1.38 :: mod_autoindex errors
On Sun, 10 Jul 2005, Alexey Beschiokov wrote:
Игорь, после перехода с 36 на 38 как странно стал работать auntoindex с
файлами/папками с русскими названиями - такое впечатление что строка
иногда не терминируется и в конце выводицца какойто мусор.
Прилагаемый патч должен помочь.
Игорь Сысоев
http://sysoev.ru --- src/http/modules/ngx_http_autoindex_module.c Fri Jun 24 17:03:43 2005
+++ src/http/modules/ngx_http_autoindex_module.c Sun Jul 10 21:41:27 2005
@@ -315,16 +315,16 @@
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 @@
entry = entries.elts;
for (i = 0; i < entries.nelts; i++) {
len += sizeof("<a href=\"") - 1
- + 1 /* 1 is for "/" */
+ entry[i].name.len + entry[i].escape
+ + 1 /* 1 is for "/" */
+ sizeof("\">") - 1
+ entry[i].name.len - entry[i].utf_len
+ NGX_HTTP_AUTOINDEX_NAME_LEN + sizeof(">") - 2
+ sizeof("</a>") - 1
+ sizeof(" 28-Sep-1970 12:00 ") - 1
- + 20
+ + 20 /* the file size */
+ 2;
}
@@ -407,7 +407,7 @@
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;