costin      02/04/09 10:23:49

  Modified:    http11/src/java/org/apache/coyote/http11
                        Http11Processor.java
  Log:
  If host header is not set, use the local socket to set the local port
  and hostname.
  
  Remy - I'm not sure if this is correct, but I see no other way to
  pass this info ( I could add a callback - but this is needed in most
  calls ).
  
  If there is any particular reason to keep port and localhost unset
  I'll rollback and add the callback.
  
  ( this used to be in the 3.3-specific code, and is needed to construct
  redirects, etc )
  
  Revision  Changes    Path
  1.20      +13 -9     
jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/Http11Processor.java
  
  Index: Http11Processor.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/http11/src/java/org/apache/coyote/http11/Http11Processor.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- Http11Processor.java      9 Apr 2002 09:27:12 -0000       1.19
  +++ Http11Processor.java      9 Apr 2002 17:23:49 -0000       1.20
  @@ -65,6 +65,7 @@
   import java.io.IOException;
   import java.io.OutputStream;
   import java.net.Socket;
  +import java.net.InetAddress;
   
   import org.apache.tomcat.util.buf.ByteChunk;
   import org.apache.tomcat.util.buf.MessageBytes;
  @@ -345,7 +346,6 @@
           int keepAliveLeft = maxKeepAliveRequests;
   
           while (started && !error && keepAlive) {
  -
               try {
                   inputBuffer.parseRequestLine();
                   inputBuffer.parseHeaders();
  @@ -720,19 +720,22 @@
       /**
        * Parse host.
        */
  -    public static void parseHost(Request req)
  +    public void parseHost(Request req)
           throws IOException {
   
           MessageBytes valueMB = req.getMimeHeaders().getValue("host");
  -        // 3.3 version. In 4.0 it is extracted from the host header.
  -        // XXX I would rather trust the socket...
  -        //serverPort = socket.getLocalPort();
  +
  +        // Default is what the socket tells us. Overriden if a host is found/parsed
  +        req.setServerPort( socket.getLocalPort() );
  +        InetAddress localAddress = socket.getLocalAddress();
  +        
           ByteChunk valueBC = null;
           if (valueMB == null) {
               // That was in the 3.3 connector. 4.0 let it unset.
  -            //// InetAddress localAddress = socket.getLocalAddress();
  -            ////localHost = localAddress.getHostName();
  -            // serverNameMB.setString( getLocalHost() );
  +            // Setting the socket-related fields. The adapter doesn't know about
  +            // socket.
  +            req.setLocalHost( localAddress.getHostName() );
  +            req.serverName().setString( localAddress.getHostName() );
               return;
           }
           valueBC = valueMB.getByteChunk();
  @@ -750,7 +753,8 @@
           }
   
           if (colonPos < 0) {
  -            req.setServerPort(80);
  +            //The info from socket is usually acurate
  +            // req.setServerPort(80);
               req.serverName().setBytes( valueB, valueS, valueL);
           } else {
               req.serverName().setBytes( valueB, valueS, colonPos);
  
  
  

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

Reply via email to