summaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorAlon Levy <alon@pobox.com>2015-01-29 15:33:51 +0200
committerAlon Levy <alon@pobox.com>2015-01-29 15:33:51 +0200
commit17904819f84061c1c39cc24b2a62117d7177f685 (patch)
tree5424fb75084f2ac255e5ad1f0bd986be726c076e /src/server
parentcb3ace33ac5cac97dd887f98297bfddfed383911 (diff)
server: prevent infinite redirect (client stops at some point) on scheme://{host!=SERVER_NAME}/
Diffstat (limited to 'src/server')
-rw-r--r--src/server/rz_server.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/server/rz_server.py b/src/server/rz_server.py
index 4b641213..2cd94da9 100644
--- a/src/server/rz_server.py
+++ b/src/server/rz_server.py
@@ -225,7 +225,13 @@ def init_rest_interface(cfg, flask_webapp):
def page_not_found(e):
# FIXME: template for 404 which redirects (html, not http)
log.debug("failed redirection: request = %s" % request)
- return redirect('/')
+ if request.path == '/':
+ # oops, 500 is the correct thing here - we cannot redirect to '/', will loop
+ # instead use what we know is a correct URL - possibly taking the user to another
+ # site (depends on how it routes SERVER_NAME
+ return redirect(request.url.split('://', 1)[0] + "://" + cfg.SERVER_NAME + '/')
+ else:
+ return redirect('/')
def init_webapp(cfg, kernel, db_ctl=None):