]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Make @removeslash a no-op when applied to a request for '/'.
authorBen Darnell <ben@bendarnell.com>
Sat, 12 Feb 2011 04:25:06 +0000 (20:25 -0800)
committerBen Darnell <ben@bendarnell.com>
Sat, 12 Feb 2011 04:25:06 +0000 (20:25 -0800)
This prevents a redirect loop as browsers interpret an empty redirect
as a redirect to /.

tornado/web.py

index 01ba81bb6cdaa0723913c1780d9441866ed451dd..904336edd16953a84bdb1ba358fedfeb73c8480e 100644 (file)
@@ -954,10 +954,12 @@ def removeslash(method):
         if self.request.path.endswith("/"):
             if self.request.method in ("GET", "HEAD"):
                 uri = self.request.path.rstrip("/")
-                if self.request.query: uri += "?" + self.request.query
-                self.redirect(uri)
-                return
-            raise HTTPError(404)
+                if uri:  # don't try to redirect '/' to ''
+                    if self.request.query: uri += "?" + self.request.query
+                    self.redirect(uri)
+                    return
+            else:
+                raise HTTPError(404)
         return method(self, *args, **kwargs)
     return wrapper