remm 02/03/15 11:04:49 Modified: coyote/src/java/org/apache/coyote/tomcat4 CoyoteProcessor.java Log: - The session ID parsing code was incorrect (it needed to be adapted over the old TC 4 code). Bug reported by Craig. Revision Changes Path 1.15 +32 -14 jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat4/CoyoteProcessor.java Index: CoyoteProcessor.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat4/CoyoteProcessor.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- CoyoteProcessor.java 15 Mar 2002 05:31:50 -0000 1.14 +++ CoyoteProcessor.java 15 Mar 2002 19:04:49 -0000 1.15 @@ -1,6 +1,6 @@ -/* * $Header: /home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat4/CoyoteProcessor.java,v 1.14 2002/03/15 05:31:50 remm Exp $ - * $Revision: 1.14 $ - * $Date: 2002/03/15 05:31:50 $ +/* * $Header: /home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat4/CoyoteProcessor.java,v 1.15 2002/03/15 19:04:49 remm Exp $ + * $Revision: 1.15 $ + * $Date: 2002/03/15 19:04:49 $ * * ==================================================================== * @@ -83,6 +83,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.tomcat.util.buf.ByteChunk; import org.apache.tomcat.util.buf.MessageBytes; import org.apache.coyote.ActionCode; @@ -116,7 +117,7 @@ * * @author Craig R. McClanahan * @author Remy Maucherat - * @version $Revision: 1.14 $ $Date: 2002/03/15 05:31:50 $ + * @version $Revision: 1.15 $ $Date: 2002/03/15 19:04:49 $ */ final class CoyoteProcessor @@ -389,6 +390,8 @@ else request.setServerPort(serverPort); + parseSessionId(req); + if (!normalize(req.decodedURI())) { res.setStatus(400); res.setMessage("Invalid URI"); @@ -412,7 +415,6 @@ } parseHost(); - parseSessionId(); parseCookies(); } @@ -464,13 +466,17 @@ /** * Parse session id in URL. + * FIXME: Optimize this. */ - protected void parseSessionId() { + protected void parseSessionId(Request req) { + + ByteChunk uriBC = req.decodedURI().getByteChunk(); + int semicolon = uriBC.indexOf(match, 0, match.length(), 0); - String uri = request.getRequestURI(); + if (semicolon > 0) { - int semicolon = uri.indexOf(match); - if (semicolon >= 0) { + // Parse session ID, and extract it from the decoded request URI + String uri = uriBC.toString(); String rest = uri.substring(semicolon + match.length()); int semicolon2 = rest.indexOf(';'); if (semicolon2 >= 0) { @@ -481,11 +487,23 @@ rest = ""; } request.setRequestedSessionURL(true); - uri = uri.substring(0, semicolon) + rest; - if (debug >= 1) - log(" Requested URL session id is " + - ((HttpServletRequest) request.getRequest()) - .getRequestedSessionId()); + req.decodedURI().setString(uri.substring(0, semicolon) + rest); + + // Extract session ID from request URI + uri = req.requestURI().toString(); + semicolon = uri.indexOf(match); + + if (semicolon > 0) { + rest = uri.substring(semicolon + match.length()); + semicolon2 = rest.indexOf(';'); + if (semicolon2 >= 0) { + rest = rest.substring(semicolon2); + } else { + rest = ""; + } + req.requestURI().setString(uri.substring(0, semicolon) + rest); + } + } else { request.setRequestedSessionId(null); request.setRequestedSessionURL(false);
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>