remm        02/03/07 21:16:56

  Modified:    coyote/src/java/org/apache/coyote/tomcat4
                        CoyoteProcessor.java
  Log:
  - Always parse host header (and extract the server name and port from it).
  
  Revision  Changes    Path
  1.5       +71 -4     
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.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- CoyoteProcessor.java      27 Feb 2002 08:24:08 -0000      1.4
  +++ CoyoteProcessor.java      8 Mar 2002 05:16:56 -0000       1.5
  @@ -1,6 +1,6 @@
  -/* * $Header: 
/home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat4/CoyoteProcessor.java,v
 1.4 2002/02/27 08:24:08 remm Exp $
  - * $Revision: 1.4 $
  - * $Date: 2002/02/27 08:24:08 $
  +/* * $Header: 
/home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat4/CoyoteProcessor.java,v
 1.5 2002/03/08 05:16:56 remm Exp $
  + * $Revision: 1.5 $
  + * $Date: 2002/03/08 05:16:56 $
    *
    * ====================================================================
    *
  @@ -111,7 +111,7 @@
    *
    * @author Craig R. McClanahan
    * @author Remy Maucherat
  - * @version $Revision: 1.4 $ $Date: 2002/02/27 08:24:08 $
  + * @version $Revision: 1.5 $ $Date: 2002/03/08 05:16:56 $
    */
   
   final class CoyoteProcessor
  @@ -296,8 +296,12 @@
           response.setCoyoteResponse(res);
   
           try {
  +            // Parse and set Catalina and configuration specific 
  +            // request parameters
  +            postParseRequest(req);
               // Calling the container
               connector.getContainer().invoke(request, response);
  +            response.finishResponse();
           } finally {
               // Recycle the wrapper request and response
               request.recycle();
  @@ -349,6 +353,69 @@
   
           if ((debug >= 1) && (socket != null))
               log(" An incoming request is being assigned");
  +
  +    }
  +
  +
  +    // ------------------------------------------------------ Protected Methods
  +
  +
  +    /**
  +     * Parse additional request parameters.
  +     */
  +    protected void postParseRequest(Request req)
  +        throws IOException {
  +
  +        req.setSecure(connector.getSecure());
  +        req.scheme().setString(connector.getScheme());
  +
  +        parseHost();
  +        // parseSession(req);
  +        // parseParameters(req);
  +
  +    }
  +
  +
  +    /**
  +     * Parse host.
  +     */
  +    protected void parseHost()
  +        throws IOException {
  +
  +        String value = request.getHeader("host");
  +        if (value != null) {
  +            int n = value.indexOf(':');
  +            if (n < 0) {
  +                if (connector.getScheme().equals("http")) {
  +                    request.setServerPort(80);
  +                } else if (connector.getScheme().equals("https")) {
  +                    request.setServerPort(443);
  +                }
  +                if (proxyName != null)
  +                    request.setServerName(proxyName);
  +                else
  +                    request.setServerName(value);
  +            } else {
  +                if (proxyName != null)
  +                    request.setServerName(proxyName);
  +                else
  +                    request.setServerName(value.substring(0, n).trim());
  +                if (proxyPort != 0)
  +                    request.setServerPort(proxyPort);
  +                else {
  +                    int port = 80;
  +                    try {
  +                        port =
  +                            Integer.parseInt(value.substring(n + 1).trim());
  +                    } catch (Exception e) {
  +                        throw new IOException
  +                            (sm.getString
  +                             ("coyoteProcessor.parseHeaders.portNumber"));
  +                    }
  +                    request.setServerPort(port);
  +                }
  +            }
  +        }
   
       }
   
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to