Blob Blame History Raw
# https://github.com/Kozea/Radicale/pull/1271/
--- Radicale-3.1.7/radicale/app/move.py.orig
+++ Radicale-3.1.7/radicale/app/move.py
@@ -33,10 +33,16 @@ class ApplicationPartMove(ApplicationBase):
         """Manage MOVE request."""
         raw_dest = environ.get("HTTP_DESTINATION", "")
         to_url = urlparse(raw_dest)
-        if to_url.netloc != environ["HTTP_HOST"]:
-            logger.info("Unsupported destination address: %r", raw_dest)
-            # Remote destination server, not supported
-            return httputils.REMOTE_DESTINATION
+        if environ.get("HTTP_X_FORWARDED_HOST"):
+            if to_url.netloc != environ["HTTP_X_FORWARDED_HOST"]:
+                logger.info("Unsupported destination address: %r", raw_dest)
+                # Remote destination server, not supported
+                return httputils.REMOTE_DESTINATION
+        else:
+            if to_url.netloc != environ["HTTP_HOST"]:
+                logger.info("Unsupported destination address: %r", raw_dest)
+                # Remote destination server, not supported
+                return httputils.REMOTE_DESTINATION
         access = Access(self._rights, user, path)
         if not access.check("w"):
             return httputils.NOT_ALLOWED