billbarker 02/03/31 20:48:42 Modified: coyote/src/java/org/apache/coyote/tomcat3 CoyoteRequest.java Log: Port the optimized "Host" header parsing from tomcat4. Revision Changes Path 1.8 +33 -10 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.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- CoyoteRequest.java 17 Mar 2002 05:26:20 -0000 1.7 +++ CoyoteRequest.java 1 Apr 2002 04:48:42 -0000 1.8 @@ -204,18 +204,41 @@ MessageBytes hH=getMimeHeaders().getValue("host"); serverPort = socket.getLocalPort(); 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); + ByteChunk valueBC = hH.getByteChunk(); + byte [] valueB = valueBC.getBytes(); + int valueL = valueBC.getLength(); + int valueS = valueBC.getStart(); + int colonPos = -1; + for( int i = 0; i < valueL; i++) { + byte b = valueB[i+valueS]; + if(b == ':') { + colonPos = i; + break; + } + } + if (colonPos > -1) { + serverNameMB.setBytes( valueB, valueS, colonPos); + int port = 0; + int mult = 1; + try { + for(int i = colonPos+1; i < valueL; i++) { + int charValue = HexUtils.DEC[(int)valueB[i+valueS]]; + if(charValue == -1) { + throw new NumberFormatException( + "Invalid port number: " + + valueB[i+valueS]); + } + port *= 10; + port += charValue; + } + serverPort = port; }catch(NumberFormatException nfe){ + contextM.log("Port Parsing error", nfe); } - }else serverNameMB.setString( hostHeader); - return; + }else { + serverNameMB.setBytes(valueB, valueS, valueL); + } + return; } if( localHost != null ) { serverNameMB.setString( localHost );
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>