Mercurial > hg > nginx-vendor-0-7
comparison src/http/modules/ngx_http_autoindex_module.c @ 502:89dc5654117c NGINX_0_7_63
nginx 0.7.63
*) Security: now "/../" are disabled in "Destination" request header
line.
*) Change: minimum supported OpenSSL version is 0.9.7.
*) Change: the "ask" parameter of the "ssl_verify_client" directive was
changed to the "optional" parameter and now it checks a client
certificate if it was offered.
Thanks to Brice Figureau.
*) Feature: now the "-V" switch shows TLS SNI support.
*) Feature: the $ssl_client_verify variable.
Thanks to Brice Figureau.
*) Feature: the "ssl_crl" directive.
Thanks to Brice Figureau.
*) Bugfix: the $ssl_client_cert variable usage corrupted memory; the
bug had appeared in 0.7.7.
Thanks to Sergey Zhuravlev.
*) Feature: now the start cache loader runs in a separate process; this
should improve large caches handling.
*) Feature: now temporary files and permanent storage area may reside
at different file systems.
*) Bugfix: nginx counted incorrectly disk cache size.
*) Change: now directive "gzip_disable msie6" does not disable gzipping
for MSIE 6.0 SV1.
*) Bugfix: nginx always added "Vary: Accept-Encoding" response header
line, if both "gzip_static" and "gzip_vary" were on.
*) Feature: the "proxy" parameter of the "geo" directive.
*) Feature: the ngx_http_geoip_module.
*) Feature: the "limit_rate_after" directive.
Thanks to Ivan Debnar.
*) Feature: the "limit_req_log_level" and "limit_conn_log_level"
directives.
*) Bugfix: now "limit_req" directive conforms to the leaky bucket
algorithm.
Thanks to Maxim Dounin.
*) Bugfix: in ngx_http_limit_req_module.
Thanks to Maxim Dounin.
*) Bugfix: now nginx allows underscores in a request method.
*) Bugfix: "proxy_pass_header" and "fastcgi_pass_header" directives did
not pass to a client the "X-Accel-Redirect", "X-Accel-Limit-Rate",
"X-Accel-Buffering", and "X-Accel-Charset" lines from backend
response header.
Thanks to Maxim Dounin.
*) Bugfix: in handling "Last-Modified" and "Accept-Ranges" backend
response header lines; the bug had appeared in 0.7.44.
Thanks to Maxim Dounin.
*) Feature: the "image_filter_transparency" directive.
*) Feature: the "image_filter" directive supports variables for setting
size.
*) Bugfix: in PNG alpha-channel support in the
ngx_http_image_filter_module.
*) Bugfix: in transparency support in the ngx_http_image_filter_module.
*) Feature: now several "perl_modules" directives may be used.
*) Bugfix: ngx_http_perl_module responses did not work in subrequests.
*) Bugfix: nginx sent '\0' in a "Location" response header line on
MKCOL request.
Thanks to Xie Zhenye.
*) Bugfix: an "error_page" directive did not redirect a 413 error; the
bug had appeared in 0.6.10.
*) Bugfix: in memory allocation error handling.
Thanks to Maxim Dounin and Kirill A. Korinskiy.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Mon, 26 Oct 2009 00:00:00 +0300 |
parents | 98143f74eb3d |
children | 68c0ae0a4959 |
comparison
equal
deleted
inserted
replaced
501:dc87c92181c7 | 502:89dc5654117c |
---|---|
143 ngx_err_t err; | 143 ngx_err_t err; |
144 ngx_buf_t *b; | 144 ngx_buf_t *b; |
145 ngx_int_t rc, size; | 145 ngx_int_t rc, size; |
146 ngx_str_t path; | 146 ngx_str_t path; |
147 ngx_dir_t dir; | 147 ngx_dir_t dir; |
148 ngx_uint_t i, level; | 148 ngx_uint_t i, level, utf8; |
149 ngx_pool_t *pool; | 149 ngx_pool_t *pool; |
150 ngx_time_t *tp; | 150 ngx_time_t *tp; |
151 ngx_chain_t out; | 151 ngx_chain_t out; |
152 ngx_array_t entries; | 152 ngx_array_t entries; |
153 ngx_http_autoindex_entry_t *entry; | 153 ngx_http_autoindex_entry_t *entry; |
249 return rc; | 249 return rc; |
250 } | 250 } |
251 | 251 |
252 filename = path.data; | 252 filename = path.data; |
253 filename[path.len] = '/'; | 253 filename[path.len] = '/'; |
254 | |
255 if (r->headers_out.charset.len == 5 | |
256 && ngx_strncasecmp(r->headers_out.charset.data, (u_char *) "utf-8", 5) | |
257 == 0) | |
258 { | |
259 utf8 = 1; | |
260 | |
261 } else { | |
262 utf8 = 0; | |
263 } | |
254 | 264 |
255 for ( ;; ) { | 265 for ( ;; ) { |
256 ngx_set_errno(0); | 266 ngx_set_errno(0); |
257 | 267 |
258 if (ngx_read_dir(&dir) == NGX_ERROR) { | 268 if (ngx_read_dir(&dir) == NGX_ERROR) { |
333 ngx_cpystrn(entry->name.data, ngx_de_name(&dir), len + 1); | 343 ngx_cpystrn(entry->name.data, ngx_de_name(&dir), len + 1); |
334 | 344 |
335 entry->escape = 2 * ngx_escape_uri(NULL, ngx_de_name(&dir), len, | 345 entry->escape = 2 * ngx_escape_uri(NULL, ngx_de_name(&dir), len, |
336 NGX_ESCAPE_HTML); | 346 NGX_ESCAPE_HTML); |
337 | 347 |
338 if (r->utf8) { | 348 if (utf8) { |
339 entry->utf_len = ngx_utf8_length(entry->name.data, entry->name.len); | 349 entry->utf_len = ngx_utf8_length(entry->name.data, entry->name.len); |
340 } else { | 350 } else { |
341 entry->utf_len = len; | 351 entry->utf_len = len; |
342 } | 352 } |
343 | 353 |
620 { | 630 { |
621 ngx_http_autoindex_loc_conf_t *conf; | 631 ngx_http_autoindex_loc_conf_t *conf; |
622 | 632 |
623 conf = ngx_palloc(cf->pool, sizeof(ngx_http_autoindex_loc_conf_t)); | 633 conf = ngx_palloc(cf->pool, sizeof(ngx_http_autoindex_loc_conf_t)); |
624 if (conf == NULL) { | 634 if (conf == NULL) { |
625 return NGX_CONF_ERROR; | 635 return NULL; |
626 } | 636 } |
627 | 637 |
628 conf->enable = NGX_CONF_UNSET; | 638 conf->enable = NGX_CONF_UNSET; |
629 conf->localtime = NGX_CONF_UNSET; | 639 conf->localtime = NGX_CONF_UNSET; |
630 conf->exact_size = NGX_CONF_UNSET; | 640 conf->exact_size = NGX_CONF_UNSET; |