comparison src/http/ngx_http_request.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 b9fdcaf2062b
children e1f4748dc78e
comparison
equal deleted inserted replaced
507:bfc170196f52 508:68c0ae0a4959
782 { 782 {
783 u_char *p; 783 u_char *p;
784 784
785 p = r->uri.data + r->uri.len - 1; 785 p = r->uri.data + r->uri.len - 1;
786 786
787 if (*p == '.' || *p == ' ') { 787 while (p > r->uri.data) {
788 788
789 while (--p > r->uri.data && (*p == '.' || *p == ' ')) { 789 if (*p == ' ') {
790 /* void */ 790 p--;
791 continue;
791 } 792 }
792 793
794 if (*p == '.') {
795 p--;
796 continue;
797 }
798
799 if (ngx_strncasecmp(p - 6, (u_char *) "::$data", 7) == 0) {
800 p -= 7;
801 continue;
802 }
803
804 break;
805 }
806
807 if (p != r->uri.data + r->uri.len - 1) {
793 r->uri.len = p + 1 - r->uri.data; 808 r->uri.len = p + 1 - r->uri.data;
794
795 ngx_http_set_exten(r); 809 ngx_http_set_exten(r);
796 } 810 }
811
797 } 812 }
798 #endif 813 #endif
799 814
800 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0, 815 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, c->log, 0,
801 "http request line: \"%V\"", &r->request_line); 816 "http request line: \"%V\"", &r->request_line);
1441 if (!r->headers_in.msie && !r->headers_in.opera) { 1456 if (!r->headers_in.msie && !r->headers_in.opera) {
1442 1457
1443 if (ngx_strstrn(user_agent, "Gecko/", 6 - 1)) { 1458 if (ngx_strstrn(user_agent, "Gecko/", 6 - 1)) {
1444 r->headers_in.gecko = 1; 1459 r->headers_in.gecko = 1;
1445 1460
1461 } else if (ngx_strstrn(user_agent, "Chrome/", 7 - 1)) {
1462 r->headers_in.chrome = 1;
1463
1464 } else if (ngx_strstrn(user_agent, "Safari/", 7 - 1)) {
1465 r->headers_in.safari = 1;
1466
1446 } else if (ngx_strstrn(user_agent, "Konqueror", 9 - 1)) { 1467 } else if (ngx_strstrn(user_agent, "Konqueror", 9 - 1)) {
1447 r->headers_in.konqueror = 1; 1468 r->headers_in.konqueror = 1;
1448 } 1469 }
1449 } 1470 }
1450 1471