You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bi...@apache.org on 2002/04/01 06:48:42 UTC
cvs commit: jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat3 CoyoteRequest.java
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: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>