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]>