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

Reply via email to