[nginx] svn commit: r4675 - trunk/src/http
mdounin at mdounin.ru
mdounin at mdounin.ru
Tue Jun 5 13:37:30 UTC 2012
Author: mdounin
Date: 2012-06-05 13:37:29 +0000 (Tue, 05 Jun 2012)
New Revision: 4675
URL: http://trac.nginx.org/nginx/changeset/4675/nginx
Log:
Win32: normalization of trailing dot inside uri.
Windows treats "/directory./" identical to "/directory/". Do the same
when working on Windows. Note that the behaviour is different from one
with last path component (where multiple spaces and dots are ignored by
Windows).
Modified:
trunk/src/http/ngx_http_parse.c
Modified: trunk/src/http/ngx_http_parse.c
===================================================================
--- trunk/src/http/ngx_http_parse.c 2012-06-05 13:36:09 UTC (rev 4674)
+++ trunk/src/http/ngx_http_parse.c 2012-06-05 13:37:29 UTC (rev 4675)
@@ -543,6 +543,13 @@
switch (ch) {
case '/':
+#if (NGX_WIN32)
+ if (r->uri_ext == p) {
+ r->complex_uri = 1;
+ state = sw_uri;
+ break;
+ }
+#endif
r->uri_ext = NULL;
state = sw_after_slash_in_uri;
break;
@@ -1117,6 +1124,12 @@
switch(ch) {
#if (NGX_WIN32)
case '\\':
+ if (u - 2 >= r->uri.data
+ && *(u - 1) == '.' && *(u - 2) != '.')
+ {
+ u--;
+ }
+
r->uri_ext = NULL;
if (p == r->uri_start + r->uri.len) {
@@ -1134,6 +1147,13 @@
break;
#endif
case '/':
+#if (NGX_WIN32)
+ if (u - 2 >= r->uri.data
+ && *(u - 1) == '.' && *(u - 2) != '.')
+ {
+ u--;
+ }
+#endif
r->uri_ext = NULL;
state = sw_slash;
*u++ = ch;
More information about the nginx-devel
mailing list