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