Просмотр исходного кода

Avoid the redirection loop (fixes #571)

Guillaume Ayoub 14 лет назад
Родитель
Сommit
4b87cb9181
1 измененных файлов с 11 добавлено и 5 удалено
  1. 11 5
      radicale/__init__.py

+ 11 - 5
radicale/__init__.py

@@ -223,12 +223,18 @@ class Application(object):
                 status, headers, answer = function(
                     environ, calendars, content, user)
             elif user and last_allowed is None:
-                # Good user and no calendars found, redirect user to home
+                # Good user and no calendars found
                 location = "/%s/" % str(quote(user))
-                log.LOGGER.info("redirecting to %s" % location)
-                status = client.FOUND
-                headers = {"Location": location}
-                answer = "Redirecting to %s" % location
+                if location == environ["PATH_INFO"]:
+                    # We already have redirected the client
+                    status, headers, answer = function(
+                        environ, calendars, content, user)
+                else:
+                    # Redirect the client
+                    log.LOGGER.info("redirecting to %s" % location)
+                    status = client.FOUND
+                    headers = {"Location": location}
+                    answer = "Redirecting to %s" % location
             else:
                 # Unknown or unauthorized user
                 status = client.UNAUTHORIZED