From: rjung Date: Tue, 5 Jul 2011 10:08:00 +0000 (+0000) Subject: Fix response.encodeURL() for the special case of X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=b15f4bb3785bbe4802ab9ced17dc853430634f63;p=tomcat7.0 Fix response.encodeURL() for the special case of an absolute URL with no path segment (http://name). git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@1142959 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/java/org/apache/catalina/connector/Response.java b/java/org/apache/catalina/connector/Response.java index df7d8faad..6b8ca7bfe 100644 --- a/java/org/apache/catalina/connector/Response.java +++ b/java/org/apache/catalina/connector/Response.java @@ -1198,8 +1198,10 @@ public class Response String absolute = toAbsolute(url); if (isEncodeable(absolute)) { // W3c spec clearly said - if (url.equalsIgnoreCase("")){ + if (url.equalsIgnoreCase("")) { url = absolute; + } else if (url.equals(absolute) && !hasPath(url)) { + url += '/'; } return (toEncoded(url, request.getSessionInternal().getIdInternal())); } else { @@ -1648,6 +1650,21 @@ public class Response /** + * Determine if an absolute URL has a path component + */ + private boolean hasPath(String uri) { + int pos = uri.indexOf("://"); + if (pos < 0) { + return false; + } + pos = uri.indexOf('/', pos + 3); + if (pos < 0) { + return false; + } + return true; + } + + /** * Determine if a URI string has a scheme component. */ private boolean hasScheme(String uri) { diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 1948706fd..04cf30137 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -74,6 +74,10 @@ 51473: Fix concatenation of values in SecurityConfig.setSecurityProperty(). (kkolinko) + + Fix response.encodeURL() for the special case of an absolute URL + with no path segment (http://name). (rjung) +