billbarker    02/03/10 16:24:10

  Modified:    coyote/src/java/org/apache/coyote/tomcat3
                        CoyoteProcessor.java CoyoteRequest.java
                        CoyoteResponse.java
  Log:
  Fix problems with the initial version.
  
  This version almost runs (if you patch HexUtils with the one from j-t-c).  Cookies 
aren't working yet (strange), and POST seems to have issues.
  
  Revision  Changes    Path
  1.2       +8 -3      
jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat3/CoyoteProcessor.java
  
  Index: CoyoteProcessor.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat3/CoyoteProcessor.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- CoyoteProcessor.java      10 Mar 2002 06:14:37 -0000      1.1
  +++ CoyoteProcessor.java      11 Mar 2002 00:24:10 -0000      1.2
  @@ -80,8 +80,9 @@
       private CoyoteResponse resA;
       private ContextManager cm;
       private boolean secure=false;
  -    private Socket socket=null;
  +    private int serverPort=-1;
       private SSLImplementation sslImplementation=null;
  +    private SSLSupport sslSupport=null;
   
       CoyoteProcessor(ContextManager ctxman) {
        cm   = ctxman;
  @@ -93,6 +94,8 @@
       public void recycle() {
        secure = false;
        sslImplementation=null;
  +     sslSupport=null;
  +     serverPort=-1;
       }
   
       public void setSSLImplementation(SSLImplementation ssl) {
  @@ -102,23 +105,25 @@
        secure = isSecure;
       }
       public void setSocket(Socket socket) {
  +     serverPort = socket.getLocalPort();
        if( secure ) {
            // Load up the SSLSupport class
            if(sslImplementation != null)
  -             reqA.setSSLSupport(sslImplementation.getSSLSupport(socket));
  +             sslSupport = sslImplementation.getSSLSupport(socket);
        }
       }
       public void service(org.apache.coyote.Request request, 
                        org.apache.coyote.Response response) 
            throws Exception{
        reqA.setCoyoteRequest(request);
  +     reqA.setServerPort(serverPort);
        resA.setCoyoteResponse(response);
        if( secure ) {
            reqA.scheme().setString( "https" );
            
                // Load up the SSLSupport class
            if(sslImplementation != null)
  -             reqA.setSSLSupport(sslImplementation.getSSLSupport(socket));
  +             reqA.setSSLSupport(sslSupport);
        }
            
        cm.service( reqA, resA );
  
  
  
  1.2       +38 -9     
jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat3/CoyoteRequest.java
  
  Index: CoyoteRequest.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat3/CoyoteRequest.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- CoyoteRequest.java        10 Mar 2002 06:14:37 -0000      1.1
  +++ CoyoteRequest.java        11 Mar 2002 00:24:10 -0000      1.2
  @@ -102,13 +102,16 @@
        coyoteRequest=cReq;
        // This is really ugly, but fast.
        // I could still be talked out of it.
  -     schemeMB = coyoteRequest.scheme();
  -     methodMB = coyoteRequest.method();
  -     uriMB    = coyoteRequest.requestURI();
  -     queryMB  = coyoteRequest.query();
  -     protoMB  = coyoteRequest.protocol();
  +     try {
  +         schemeMB.duplicate(coyoteRequest.scheme());
  +         methodMB.duplicate(coyoteRequest.method());
  +         uriMB.duplicate(coyoteRequest.requestURI());
  +         queryMB.duplicate(coyoteRequest.query());
  +         protoMB.duplicate(coyoteRequest.protocol());
  +     } catch(IOException iex) { // ignore
  +     }
        headers  = coyoteRequest.getMimeHeaders();
  -     params.setQuery(queryMB);
  +     scookies.setHeaders(headers);
        params.setHeaders(headers);
       }
   
  @@ -166,6 +169,29 @@
   
       }
   
  +    protected void parseHostHeader() {
  +     MessageBytes hH=getMimeHeaders().getValue("host");
  +     if (hH != null) {
  +         // XXX use MessageBytes
  +         String hostHeader = hH.toString();
  +         int i = hostHeader.indexOf(':');
  +         if (i > -1) {
  +             serverNameMB.setString( hostHeader.substring(0,i));
  +                hostHeader = hostHeader.substring(i+1);
  +                try{
  +                    serverPort=Integer.parseInt(hostHeader);
  +                }catch(NumberFormatException  nfe){
  +                }
  +         }else serverNameMB.setString( hostHeader);
  +        return;
  +     }
  +     if( localHost != null ) {
  +         serverNameMB.setString( localHost );
  +     }
  +     // default to localhost - and warn
  +     //      log("No server name, defaulting to localhost");
  +        serverNameMB.setString( getLocalHost() );
  +    }
   
       // -------------------- override special methods
   
  @@ -180,13 +206,16 @@
       public String getLocalHost() {
        return coyoteRequest.getLocalHost();
       }
  -
       public MessageBytes serverName(){
  -        return coyoteRequest.serverName();
  +        if(! serverNameMB.isNull()) return serverNameMB;
  +        parseHostHeader();
  +        return serverNameMB;
       }
   
       public int getServerPort(){
  -        return coyoteRequest.getServerPort();
  +        if(serverPort!=-1) return serverPort;
  +        parseHostHeader();
  +        return serverPort;
       }
   
       void setSSLSupport(SSLSupport s){
  
  
  
  1.2       +12 -0     
jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat3/CoyoteResponse.java
  
  Index: CoyoteResponse.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat3/CoyoteResponse.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- CoyoteResponse.java       10 Mar 2002 06:14:37 -0000      1.1
  +++ CoyoteResponse.java       11 Mar 2002 00:24:10 -0000      1.2
  @@ -110,6 +110,8 @@
   
       public void endHeaders()  throws IOException {
        super.endHeaders();
  +     coyoteResponse.setStatus(getStatus());
  +
        Enumeration names = getMimeHeaders().names();
        while( names.hasMoreElements() ) {
            String hname = (String)names.nextElement();
  @@ -129,5 +131,15 @@
            outputChunk.setBytes(buffer, pos, count);
            coyoteResponse.doWrite( outputChunk );
        }
  +    }
  +
  +    public void reset() throws IllegalStateException {
  +     super.reset();
  +     if( ! included )
  +         coyoteResponse.reset();
  +    }
  +    public void finish() throws IOException {
  +     super.finish();
  +     coyoteResponse.finish();
       }
   }
  
  
  

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

Reply via email to