jfarcand    2003/03/04 18:31:47

  Modified:    coyote/src/java/org/apache/coyote Request.java
               coyote/src/java/org/apache/coyote/tomcat5 CoyoteRequest.java
               http11/src/java/org/apache/coyote/http11
                        Http11Processor.java
               catalina/src/share/org/apache/catalina/connector
                        RequestFacade.java
               catalina/src/share/org/apache/catalina/core
                        DummyRequest.java
  Log:
  Servlet 2.4 new features:
  
  ===================================================
  Add the following methods in ServletRequest, SRV.14.2.16.1.
  
        public int getRemotePort()
               Returns the Internet Protocol (IP) source port of the client
               or last proxy that sent the request.
  
        public java.lang.String getLocalName()
               Returns the host name of the Internet Protocol (IP) interface on
               which the request was received.
  
        public java.lang.String getLocalAddr()
               Returns the Internet Protocol (IP) address of the interface on
               which the request  was received.
  
        public int getLocalPort()
               Returns the Internet Protocol (IP) port number of the interface
               on which the request was received.
  ===================================================
  
  Please review the patch and let me know if it brokes other Connectors.
  
  Specifically, is ActionCode.ACTION_REQ_HOST_ATTRIBUTE is an appropriate hook event 
or should I create one specifically for localAddr and localPort?
  
  Revision  Changes    Path
  1.19      +18 -2     
jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/Request.java
  
  Index: Request.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/Request.java,v
  retrieving revision 1.18
  retrieving revision 1.19
  diff -u -r1.18 -r1.19
  --- Request.java      20 Jan 2003 23:45:11 -0000      1.18
  +++ Request.java      5 Mar 2003 02:31:47 -0000       1.19
  @@ -134,6 +134,8 @@
       private MessageBytes serverNameMB = new MessageBytes();
   
       private String localHost;
  +    
  +    private int remotePort;
   
       private MessageBytes schemeMB = new MessageBytes();
   
  @@ -146,8 +148,10 @@
   
       // remote address/host
       private MessageBytes remoteAddrMB = new MessageBytes();
  +    private MessageBytes localAddr = new MessageBytes();
       private MessageBytes remoteHostMB = new MessageBytes();
  -    
  +    private MessageBytes localAddrMB = new MessageBytes();
  +     
       private MimeHeaders headers = new MimeHeaders();
   
       private MessageBytes instanceId = new MessageBytes();
  @@ -280,12 +284,24 @@
        return remoteHostMB;
       }
   
  +    public MessageBytes localAddr() {
  +     return localAddrMB;
  +    }
  +    
       public String getLocalHost() {
        return localHost;
       }
   
       public void setLocalHost(String host) {
        this.localHost = host;
  +    }    
  +    
  +    public int getRemotePort(){
  +        return remotePort;
  +    }
  +        
  +    public void setRemotePort(int port){
  +        this.remotePort = port;
       }
   
   
  @@ -493,7 +509,7 @@
           parameters.recycle();
   
           unparsedURIMB.recycle();
  -        uriMB.recycle();
  +        uriMB.recycle(); 
           decodedUriMB.recycle();
        queryMB.recycle();
        methodMB.recycle();
  
  
  
  1.21      +70 -5     
jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat5/CoyoteRequest.java
  
  Index: CoyoteRequest.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/coyote/src/java/org/apache/coyote/tomcat5/CoyoteRequest.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- CoyoteRequest.java        30 Jan 2003 18:22:58 -0000      1.20
  +++ CoyoteRequest.java        5 Mar 2003 02:31:47 -0000       1.21
  @@ -374,7 +374,17 @@
        */
       protected String remoteHost = null;
   
  -
  +    
  +    /**
  +     * Remote port
  +     */
  +    protected int remotePort = -1;
  +    
  +    /**
  +     * Local address
  +     */
  +    protected String localAddr = null;
  +    
       // --------------------------------------------------------- Public Methods
   
   
  @@ -402,6 +412,8 @@
           secure = false;
           remoteAddr = null;
           remoteHost = null;
  +        remotePort = -1;
  +        localAddr = null;
   
           attributes.clear();
           notes.clear();
  @@ -622,6 +634,8 @@
           this.socket = socket;
           remoteHost = null;
           remoteAddr = null;
  +        remotePort = -1;
  +        localAddr = null;
       }
   
   
  @@ -1172,7 +1186,58 @@
           return remoteHost;
       }
   
  +    /**
  +     * Returns the Internet Protocol (IP) source port of the client
  +     * or last proxy that sent the request.
  +     */    
  +    public int getRemotePort(){
  +        if (remotePort == -1) {
  +            if (socket != null) {
  +                remotePort = socket.getPort();
  +            } else {
  +                coyoteRequest.action
  +                    (ActionCode.ACTION_REQ_HOST_ATTRIBUTE, coyoteRequest);
  +                remotePort = coyoteRequest.getRemotePort();
  +            }
  +        }
  +        return remotePort;    
  +    }
  +
  +    /**
  +     * Returns the host name of the Internet Protocol (IP) interface on
  +     * which the request was received.
  +     */
  +    public String getLocalName(){
  +        return getServerName();
  +    }
  +
  +    /**
  +     * Returns the Internet Protocol (IP) address of the interface on
  +     * which the request  was received.
  +     */       
  +    public String getLocalAddr(){
  +        if (localAddr == null) {
  +            if (socket != null) {
  +                InetAddress inet = socket.getLocalAddress();
  +                localAddr = inet.getHostAddress();
  +            } else {
  +                coyoteRequest.action
  +                    (ActionCode.ACTION_REQ_HOST_ATTRIBUTE, coyoteRequest);
  +                localAddr = coyoteRequest.localAddr().toString();
  +            }
  +        }
  +        return localAddr;    
  +    }
  +
   
  +    /**
  +     * Returns the Internet Protocol (IP) port number of the interface
  +     * on which the request was received.
  +     */
  +    public int getLocalPort(){
  +        return getServerPort();
  +    }
  +    
       /**
        * Return a RequestDispatcher that wraps the resource at the specified
        * path, which may be interpreted as relative to the current request path.
  
  
  
  1.59      +22 -2     
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.58
  retrieving revision 1.59
  diff -u -r1.58 -r1.59
  --- Http11Processor.java      29 Jan 2003 12:43:26 -0000      1.58
  +++ Http11Processor.java      5 Mar 2003 02:31:47 -0000       1.59
  @@ -236,7 +236,18 @@
        */
       protected String remoteHost = null;
   
  -
  +    
  +    /**
  +     * Remote port to which the socket is connected
  +     */
  +    protected int remotePort = -1;
  +    
  +    
  +    /**
  +     *
  +     */
  +    protected String localAddr = null; 
  +    
       /**
        * Maximum timeout on uploads.
        */
  @@ -561,6 +572,8 @@
           // Set the remote address
           remoteAddr = null;
           remoteHost = null;
  +        localAddr = null;
  +        remotePort = -1;
   
           // Setting up the I/O
           inputBuffer.setInputStream(input);
  @@ -783,6 +796,14 @@
               if (remoteHost == null) {
                   remoteHost = socket.getInetAddress().getHostName();
                   request.remoteHost().setString(remoteHost);
  +            }           
  +            if (remotePort == -1){
  +                remotePort = socket.getPort();
  +                request.setRemotePort(remotePort);
  +            }            
  +            if (localAddr == null){
  +               localAddr = socket.getLocalAddress().getHostAddress();
  +               request.localAddr().setString(localAddr);
               }
   
           } else if (actionCode == ActionCode.ACTION_REQ_SSL_CERTIFICATE) {
  @@ -1008,7 +1029,6 @@
               InetAddress localAddress = socket.getLocalAddress();
               // Setting the socket-related fields. The adapter doesn't know 
               // about socket.
  -            request.setLocalHost(localAddress.getHostName());
               request.serverName().setString(localAddress.getHostName());
               return;
           }
  
  
  
  1.2       +37 -4     
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/connector/RequestFacade.java
  
  Index: RequestFacade.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/connector/RequestFacade.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- RequestFacade.java        18 Jul 2002 16:47:57 -0000      1.1
  +++ RequestFacade.java        5 Mar 2003 02:31:47 -0000       1.2
  @@ -85,6 +85,7 @@
    *
    * @author Craig R. McClanahan
    * @author Remy Maucherat
  + * @author Jean-Francois Arcand
    * @version $Revision$ $Date$
    */
   
  @@ -258,5 +259,37 @@
           return request.getRealPath(path);
       }
   
  +    /**
  +     * Returns the Internet Protocol (IP) source port of the client
  +     * or last proxy that sent the request.
  +     */    
  +    public int getRemotePort(){
  +        return request.getRemotePort();
  +    }
  +
  +
  +    /**
  +     * Returns the host name of the Internet Protocol (IP) interface on
  +     * which the request was received.
  +     */
  +    public String getLocalName(){
  +        return request.getLocalName();
  +    }
   
  +    /**
  +     * Returns the Internet Protocol (IP) address of the interface on
  +     * which the request  was received.
  +     */       
  +    public String getLocalAddr(){
  +        return request.getLocalAddr();
  +    }
  +
  +    
  +    /**
  +     * Returns the Internet Protocol (IP) port number of the interface
  +     * on which the request was received.
  +     */
  +    public int getLocalPort(){
  +        return request.getLocalPort();
  +    }
   }
  
  
  
  1.8       +9 -6      
jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/DummyRequest.java
  
  Index: DummyRequest.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/DummyRequest.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- DummyRequest.java 30 Jan 2003 00:04:28 -0000      1.7
  +++ DummyRequest.java 5 Mar 2003 02:31:47 -0000       1.8
  @@ -346,7 +346,10 @@
       public boolean isRequestedSessionIdValid() { return false; }
       public boolean isUserInRole(String role) { return false; }
       public Principal getUserPrincipal() { return null; }
  -
  -
  +    public String getLocalAddr() { return null; }    
  +    public String getLocalName() { return null; }
  +    public int getLocalPort() { return -1; }
  +    public int getRemotePort() { return -1; }
  +    
   }
   
  
  
  

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

Reply via email to