Author: markt Date: Wed Dec 26 13:23:17 2007 New Revision: 606952 URL: http://svn.apache.org/viewvc?rev=606952&view=rev Log: Fix bug 43914. Location headers must be encoded. Patch provided by Ivan Todoroski.
Modified: tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java Modified: tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java?rev=606952&r1=606951&r2=606952&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java (original) +++ tomcat/trunk/java/org/apache/catalina/connector/CoyoteAdapter.java Wed Dec 26 13:23:17 2007 @@ -25,6 +25,7 @@ import org.apache.catalina.Globals; import org.apache.catalina.Wrapper; import org.apache.catalina.util.StringManager; +import org.apache.catalina.util.URLEncoder; import org.apache.coyote.ActionCode; import org.apache.coyote.Adapter; import org.apache.juli.logging.Log; @@ -101,6 +102,28 @@ StringManager.getManager(Constants.Package); + /** + * Encoder for the Location URL in HTTP redirects. + */ + protected static URLEncoder urlEncoder; + + + // ----------------------------------------------------- Static Initializer + + + /** + * The safe character set. + */ + static { + urlEncoder = new URLEncoder(); + urlEncoder.addSafeCharacter('-'); + urlEncoder.addSafeCharacter('_'); + urlEncoder.addSafeCharacter('.'); + urlEncoder.addSafeCharacter('*'); + urlEncoder.addSafeCharacter('/'); + } + + // -------------------------------------------------------- Adapter Methods @@ -452,7 +475,7 @@ // Possible redirect MessageBytes redirectPathMB = request.getMappingData().redirectPath; if (!redirectPathMB.isNull()) { - String redirectPath = redirectPathMB.toString(); + String redirectPath = urlEncoder.encode(redirectPathMB.toString()); String query = request.getQueryString(); if (request.isRequestedSessionIdFromURL()) { // This is not optimal, but as this is not very common, it --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]