From a810c100d0d7fd235334dbf49cc0bd43a2a54d75 Mon Sep 17 00:00:00 2001 From: Scott Cantor Date: Sat, 24 Oct 2009 19:24:33 +0000 Subject: [PATCH] Fix use of relative redirect. --- shibsp/handler/impl/LogoutHandler.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/shibsp/handler/impl/LogoutHandler.cpp b/shibsp/handler/impl/LogoutHandler.cpp index b78b7f6..9f215dd 100644 --- a/shibsp/handler/impl/LogoutHandler.cpp +++ b/shibsp/handler/impl/LogoutHandler.cpp @@ -70,9 +70,20 @@ pair LogoutHandler::sendLogoutPage( return make_pair(true,response.sendResponse(str)); } prop = application.getString("homeURL"); - if (!prop.first) - prop.second = "/"; - return make_pair(true,response.sendRedirect(prop.second)); + if (prop.first) + return make_pair(true,response.sendRedirect(prop.second)); + + // No homeURL, so compute a URL to the root of the site. + int port = request.getPort(); + const char* scheme = request.getScheme(); + string dest = string(scheme) + "://" + request.getHostname(); + if ((!strcmp(scheme,"http") && port!=80) || (!strcmp(scheme,"https") && port!=443)) { + ostringstream portstr; + portstr << port; + dest += ":" + portstr.str(); + } + dest += '/'; + return make_pair(true,response.sendRedirect(dest.c_str())); } pair LogoutHandler::run(SPRequest& request, bool isHandler) const -- 2.1.4