comparison src/http/modules/ngx_http_dav_module.c @ 508:68c0ae0a4959 NGINX_0_7_66

nginx 0.7.66 *) Security: now nginx/Windows ignores default file stream name. Thanks to Jose Antonio Vazquez Gonzalez. *) Change: now the charset filter runs before the SSI filter. *) Change: now no message is written in an error log if a variable is not found by $r->variable() method. *) Change: now keepalive connections after POST requests are not disabled for MSIE 7.0+. Thanks to Adam Lounds. *) Feature: the "proxy_no_cache" and "fastcgi_no_cache" directives. *) Feature: now the "rewrite" directive does a redirect automatically if the $scheme variable is used. Thanks to Piotr Sikora. *) Feature: the "chunked_transfer_encoding" directive. *) Feature: the $geoip_city_continent_code, $geoip_latitude, and $geoip_longitude variables. Thanks to Arvind Sundararajan. *) Feature: now the ngx_http_image_filter_module deletes always EXIF and other application specific data if the data consume more than 5% of a JPEG file. *) Feature: now the "msie_padding" directive works for Chrome too. *) Workaround: now keepalive connections are disabled for Safari. Thanks to Joshua Sierles. *) Bugfix: nginx ignored the "private" and "no-store" values in the "Cache-Control" backend response header line. *) Bugfix: an "&" character was not escaped when it was copied in arguments part in a rewrite rule. *) Bugfix: nginx might be terminated abnormally while a signal processing or if the directive "timer_resolution" was used on platforms which do not support kqueue or eventport notification methods. Thanks to George Xie and Maxim Dounin. *) Bugfix: if temporary files and permanent storage area resided at different file systems, then permanent file modification times were incorrect. Thanks to Maxim Dounin. *) Bugfix: ngx_http_memcached_module might issue the error message "memcached sent invalid trailer". Thanks to Maxim Dounin. *) Bugfix: nginx could not built zlib-1.2.4 library using the library sources. Thanks to Maxim Dounin. *) Bugfix: values of the $query_string, $arg_..., etc. variables cached in main request were used by the SSI module in subrequests. *) Bugfix: nginx did not support HTTPS referrers. *) Bugfix: nginx/Windows might not find file if path in configuration was given in other character case; the bug had appeared in 0.7.65. *) Bugfix: the $date_local variable has an incorrect value, if the "%s" format was used. Thanks to Maxim Dounin. *) Bugfix: nginx did not support all ciphers and digests used in client certificates. Thanks to Innocenty Enikeew. *) Bugfix: if ssl_session_cache was not set or was set to "none", then during client certificate verify the error "session id context uninitialized" might occur; the bug had appeared in 0.7.1. *) Bugfix: OpenSSL-1.0.0 compatibility on 64-bit Linux. Thanks to Maxim Dounin. *) Bugfix: a geo range returned default value if the range included two or more /16 networks and did not begin at /16 network boundary. *) Bugfix: the $uid_got variable might not be used in the SSI and perl modules. *) Bugfix: a worker process hung if a FIFO file was requested. Thanks to Vicente Aguilar and Maxim Dounin. *) Bugfix: a variable value was repeatedly encoded after each an "echo" SSI-command output; the bug had appeared in 0.6.14. *) Bugfix: a "stub" parameter of an "include" SSI directive was not used, if empty response has 200 status code. *) Bugfix: a block used in a "stub" parameter of an "include" SSI directive was output with "text/plain" MIME type. *) Bugfix: if a proxied or FastCGI request was internally redirected to another proxied or FastCGI location, then a segmentation fault might occur in a worker process; the bug had appeared in 0.7.65. Thanks to Yichun Zhang. *) Bugfix: IMAP connections may hang until they timed out while talking to Zimbra server. Thanks to Alan Batie. *) Bugfix: nginx did not support chunked transfer encoding for 201 responses. Thanks to Julian Reich.
author Igor Sysoev <http://sysoev.ru>
date Mon, 07 Jun 2010 00:00:00 +0400
parents 89dc5654117c
children
comparison
equal deleted inserted replaced
507:bfc170196f52 508:68c0ae0a4959
144 ngx_http_dav_handler(ngx_http_request_t *r) 144 ngx_http_dav_handler(ngx_http_request_t *r)
145 { 145 {
146 ngx_int_t rc; 146 ngx_int_t rc;
147 ngx_http_dav_loc_conf_t *dlcf; 147 ngx_http_dav_loc_conf_t *dlcf;
148 148
149 if (r->zero_in_uri) {
150 return NGX_DECLINED;
151 }
152
153 dlcf = ngx_http_get_module_loc_conf(r, ngx_http_dav_module); 149 dlcf = ngx_http_get_module_loc_conf(r, ngx_http_dav_module);
154 150
155 if (!(r->method & dlcf->methods)) { 151 if (!(r->method & dlcf->methods)) {
156 return NGX_DECLINED; 152 return NGX_DECLINED;
157 } 153 }
323 ngx_http_map_uri_to_path(r, &path, &root, 0); 319 ngx_http_map_uri_to_path(r, &path, &root, 0);
324 320
325 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, 321 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
326 "http delete filename: \"%s\"", path.data); 322 "http delete filename: \"%s\"", path.data);
327 323
328 if (ngx_file_info(path.data, &fi) == NGX_FILE_ERROR) { 324 if (ngx_link_info(path.data, &fi) == NGX_FILE_ERROR) {
329 err = ngx_errno; 325 err = ngx_errno;
330 326
331 rc = (err == NGX_ENOTDIR) ? NGX_HTTP_CONFLICT : NGX_HTTP_NOT_FOUND; 327 rc = (err == NGX_ENOTDIR) ? NGX_HTTP_CONFLICT : NGX_HTTP_NOT_FOUND;
332 328
333 return ngx_http_dav_error(r->connection->log, err, 329 return ngx_http_dav_error(r->connection->log, err,
334 rc, ngx_file_info_n, path.data); 330 rc, ngx_link_info_n, path.data);
335 } 331 }
336 332
337 if (ngx_is_dir(&fi)) { 333 if (ngx_is_dir(&fi)) {
338 334
339 if (r->uri.data[r->uri.len - 1] != '/') { 335 if (r->uri.data[r->uri.len - 1] != '/') {
356 352
357 } else { 353 } else {
358 354
359 /* 355 /*
360 * we do not need to test (r->uri.data[r->uri.len - 1] == '/') 356 * we do not need to test (r->uri.data[r->uri.len - 1] == '/')
361 * because ngx_file_info("/file/") returned NGX_ENOTDIR above 357 * because ngx_link_info("/file/") returned NGX_ENOTDIR above
362 */ 358 */
363 359
364 depth = ngx_http_dav_depth(r, 0); 360 depth = ngx_http_dav_depth(r, 0);
365 361
366 if (depth != 0 && depth != NGX_HTTP_DAV_INFINITY_DEPTH) { 362 if (depth != 0 && depth != NGX_HTTP_DAV_INFINITY_DEPTH) {
683 } 679 }
684 680
685 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0, 681 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
686 "http copy to: \"%s\"", copy.path.data); 682 "http copy to: \"%s\"", copy.path.data);
687 683
688 if (ngx_file_info(copy.path.data, &fi) == NGX_FILE_ERROR) { 684 if (ngx_link_info(copy.path.data, &fi) == NGX_FILE_ERROR) {
689 err = ngx_errno; 685 err = ngx_errno;
690 686
691 if (err != NGX_ENOENT) { 687 if (err != NGX_ENOENT) {
692 return ngx_http_dav_error(r->connection->log, err, 688 return ngx_http_dav_error(r->connection->log, err,
693 NGX_HTTP_NOT_FOUND, ngx_file_info_n, 689 NGX_HTTP_NOT_FOUND, ngx_link_info_n,
694 copy.path.data); 690 copy.path.data);
695 } 691 }
696 692
697 /* destination does not exist */ 693 /* destination does not exist */
698 694
717 } 713 }
718 714
719 dir = ngx_is_dir(&fi); 715 dir = ngx_is_dir(&fi);
720 } 716 }
721 717
722 if (ngx_file_info(path.data, &fi) == NGX_FILE_ERROR) { 718 if (ngx_link_info(path.data, &fi) == NGX_FILE_ERROR) {
723 return ngx_http_dav_error(r->connection->log, ngx_errno, 719 return ngx_http_dav_error(r->connection->log, ngx_errno,
724 NGX_HTTP_NOT_FOUND, ngx_file_info_n, 720 NGX_HTTP_NOT_FOUND, ngx_link_info_n,
725 path.data); 721 path.data);
726 } 722 }
727 723
728 if (ngx_is_dir(&fi)) { 724 if (ngx_is_dir(&fi)) {
729 725