Mercurial > hg > nginx-vendor-1-0
comparison src/http/ngx_http_request.c @ 562:7fa8dc2315bd NGINX_0_8_33
nginx 0.8.33
*) Security: now nginx/Windows ignores trailing spaces in URI.
Thanks to Dan Crowley, Core Security Technologies.
*) Security: now nginx/Windows ignores short files names.
Thanks to Dan Crowley, Core Security Technologies.
*) Change: now keepalive connections after POST requests are not
disabled for MSIE 7.0+. Thanks to Adam Lounds.
*) Workaround: now keepalive connections are disabled for Safari.
Thanks to Joshua Sierles.
*) Bugfix: if a proxied or FastCGI request was internally redirected to
another proxied or FastCGI location, then $upstream_response_time
variable may have abnormally large value; the bug had appeared in
0.8.7.
*) Bugfix: a segmentation fault might occur in a worker process, while
discarding a request body; the bug had appeared in 0.8.11.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Mon, 01 Feb 2010 00:00:00 +0000 |
parents | e19e5f542878 |
children | 01f2313e34f1 |
comparison
equal
deleted
inserted
replaced
561:1763c9f30920 | 562:7fa8dc2315bd |
---|---|
786 { | 786 { |
787 u_char *p; | 787 u_char *p; |
788 | 788 |
789 p = r->uri.data + r->uri.len - 1; | 789 p = r->uri.data + r->uri.len - 1; |
790 | 790 |
791 if (*p == '.') { | 791 if (*p == '.' || *p == ' ') { |
792 | 792 |
793 while (--p > r->uri.data && *p == '.') { /* void */ } | 793 while (--p > r->uri.data && (*p == '.' || *p == ' ')) { |
794 /* void */ | |
795 } | |
794 | 796 |
795 r->uri.len = p + 1 - r->uri.data; | 797 r->uri.len = p + 1 - r->uri.data; |
796 | 798 |
797 ngx_http_set_exten(r); | 799 ngx_http_set_exten(r); |
798 } | 800 } |
1446 r->headers_in.gecko = 1; | 1448 r->headers_in.gecko = 1; |
1447 | 1449 |
1448 } else if (ngx_strstrn(user_agent, "Chrome/", 7 - 1)) { | 1450 } else if (ngx_strstrn(user_agent, "Chrome/", 7 - 1)) { |
1449 r->headers_in.chrome = 1; | 1451 r->headers_in.chrome = 1; |
1450 | 1452 |
1453 } else if (ngx_strstrn(user_agent, "Safari/", 7 - 1)) { | |
1454 r->headers_in.safari = 1; | |
1455 | |
1451 } else if (ngx_strstrn(user_agent, "Konqueror", 9 - 1)) { | 1456 } else if (ngx_strstrn(user_agent, "Konqueror", 9 - 1)) { |
1452 r->headers_in.konqueror = 1; | 1457 r->headers_in.konqueror = 1; |
1453 } | 1458 } |
1454 } | 1459 } |
1455 | 1460 |
1995 &r->uri, &r->args); | 2000 &r->uri, &r->args); |
1996 return; | 2001 return; |
1997 } | 2002 } |
1998 | 2003 |
1999 r->done = 1; | 2004 r->done = 1; |
2005 r->write_event_handler = ngx_http_request_empty_handler; | |
2000 | 2006 |
2001 if (!r->post_action) { | 2007 if (!r->post_action) { |
2002 r->request_complete = 1; | 2008 r->request_complete = 1; |
2003 } | 2009 } |
2004 | 2010 |