You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by pi...@apache.org on 2001/07/25 05:30:42 UTC

cvs commit: jakarta-tomcat-connectors/webapp/lib pr_warp.c pr_warp.h

pier        01/07/24 20:30:42

  Modified:    webapp/apache-1.3 mod_webapp.c
               webapp/java Constants.java.in WarpRequestHandler.java
               webapp/lib pr_warp.c pr_warp.h
  Log:
  Fix for Bug 2775 part 1: Client/Server address/port informations not
  transmitted over WARP.
  
  Revision  Changes    Path
  1.21      +5 -3      jakarta-tomcat-connectors/webapp/apache-1.3/mod_webapp.c
  
  Index: mod_webapp.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/apache-1.3/mod_webapp.c,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- mod_webapp.c	2001/07/19 23:55:01	1.20
  +++ mod_webapp.c	2001/07/25 03:30:42	1.21
  @@ -57,7 +57,7 @@
   
   /**
    * @author  Pier Fumagalli <ma...@eng.sun.com>
  - * @version $Id: mod_webapp.c,v 1.20 2001/07/19 23:55:01 pier Exp $
  + * @version $Id: mod_webapp.c,v 1.21 2001/07/25 03:30:42 pier Exp $
    */
   
   #include <httpd.h>
  @@ -435,8 +435,10 @@
          data (from the connection */
       stmp=(char *)r->hostname;
       ctmp=(char *)ap_get_remote_host(con,r->per_dir_config, REMOTE_HOST);
  -    req->serv->host=apr_pstrdup(req->pool,stmp);
  -    req->clnt->host=apr_pstrdup(req->pool,ctmp);
  +    if (stmp==NULL) req->serv->host="";
  +    else req->serv->host=apr_pstrdup(req->pool,stmp);
  +    if (ctmp==NULL) req->clnt->host="";
  +    else req->clnt->host=apr_pstrdup(req->pool,ctmp);
       req->serv->addr=apr_pstrdup(req->pool,con->local_ip);
       req->clnt->addr=apr_pstrdup(req->pool,con->remote_ip);
       req->serv->port=ntohs(con->local_addr.sin_port);
  
  
  
  1.5       +2 -0      jakarta-tomcat-connectors/webapp/java/Constants.java.in
  
  Index: Constants.java.in
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/java/Constants.java.in,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Constants.java.in	2001/07/19 23:46:30	1.4
  +++ Constants.java.in	2001/07/25 03:30:42	1.5
  @@ -154,6 +154,8 @@
       public static final int TYPE_REQ_SCHEME=0x12;
       public static final int TYPE_REQ_AUTH=0x13;
       public static final int TYPE_REQ_HEADER=0x14;
  +    public static final int TYPE_REQ_SERVER=0x15;
  +    public static final int TYPE_REQ_CLIENT=0x16;
       public static final int TYPE_REQ_PROCEED=0x1f;
       
       public static final int TYPE_RES_STATUS=0x20;
  
  
  
  1.12      +25 -1     jakarta-tomcat-connectors/webapp/java/WarpRequestHandler.java
  
  Index: WarpRequestHandler.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/java/WarpRequestHandler.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- WarpRequestHandler.java	2001/07/25 01:30:47	1.11
  +++ WarpRequestHandler.java	2001/07/25 03:30:42	1.12
  @@ -140,7 +140,7 @@
                   case Constants.TYPE_REQ_SCHEME: {
                       String schm=packet.readString();
                       if (Constants.DEBUG)
  -                        logger.debug("Request schere="+schm);
  +                        logger.debug("Request scheme="+schm);
                       request.setScheme(schm);
                       break;
                   }
  @@ -161,6 +161,30 @@
                       if (Constants.DEBUG)
                           logger.debug("Request header "+hnam+": "+hval);
                       request.addHeader(hnam,hval);
  +                    break;
  +                }
  +
  +                case Constants.TYPE_REQ_SERVER: {
  +                    String host=packet.readString();
  +                    String addr=packet.readString();
  +                    int port=packet.readUnsignedShort();
  +                    if (Constants.DEBUG)
  +                        logger.debug("Server detail "+host+":"+port+
  +                                     " ("+addr+")");
  +                    request.setServerName(host);
  +                    request.setServerPort(port);
  +                    break;
  +                }
  +
  +                case Constants.TYPE_REQ_CLIENT: {
  +                    String host=packet.readString();
  +                    String addr=packet.readString();
  +                    int port=packet.readUnsignedShort();
  +                    if (Constants.DEBUG)
  +                        logger.debug("Client detail "+host+":"+port+
  +                                     " ("+addr+")");
  +                    request.setRemoteHost(host);
  +                    request.setRemoteAddr(addr);
                       break;
                   }
   
  
  
  
  1.11      +33 -1     jakarta-tomcat-connectors/webapp/lib/pr_warp.c
  
  Index: pr_warp.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/lib/pr_warp.c,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- pr_warp.c	2001/07/19 23:53:41	1.10
  +++ pr_warp.c	2001/07/25 03:30:42	1.11
  @@ -54,7 +54,7 @@
    *                                                                           *
    * ========================================================================= */
   
  -/* @version $Id: pr_warp.c,v 1.10 2001/07/19 23:53:41 pier Exp $ */
  +/* @version $Id: pr_warp.c,v 1.11 2001/07/25 03:30:42 pier Exp $ */
   #include "pr_warp.h"
   
   /* Initialize this provider. */
  @@ -301,6 +301,38 @@
       if (h->fail==wa_true) {
           n_disconnect(conn);
           return(wa_rerror(WA_MARK,r,500,"Communitcation interrupted"));
  +    }
  +
  +    /* The request client data */
  +    if (r->clnt!=NULL) {
  +        p_reset(pack);
  +        pack->type=TYPE_REQ_CLIENT;
  +        p_write_string(pack,r->clnt->host);
  +        p_write_string(pack,r->clnt->addr);
  +        p_write_ushort(pack,r->clnt->port);
  +        if (n_send(conf->sock,pack)!=wa_true) {
  +            n_disconnect(conn);
  +            return(wa_rerror(WA_MARK,r,500,"Communitcation interrupted"));
  +        } else {
  +            wa_debug(WA_MARK,"Req. server %s:%d (%s)",r->clnt->host,
  +                     r->clnt->port,r->clnt->addr);
  +        }
  +    }
  +
  +    /* The request server data */
  +    if (r->serv!=NULL) {
  +        p_reset(pack);
  +        pack->type=TYPE_REQ_SERVER;
  +        p_write_string(pack,r->serv->host);
  +        p_write_string(pack,r->serv->addr);
  +        p_write_ushort(pack,r->serv->port);
  +        if (n_send(conf->sock,pack)!=wa_true) {
  +            n_disconnect(conn);
  +            return(wa_rerror(WA_MARK,r,500,"Communitcation interrupted"));
  +        } else {
  +            wa_debug(WA_MARK,"Req. client %s:%d (%s)",r->serv->host,
  +                     r->serv->port,r->serv->addr);
  +        }
       }
   
       p_reset(pack);
  
  
  
  1.5       +3 -1      jakarta-tomcat-connectors/webapp/lib/pr_warp.h
  
  Index: pr_warp.h
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/webapp/lib/pr_warp.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- pr_warp.h	2001/07/19 23:49:00	1.4
  +++ pr_warp.h	2001/07/25 03:30:42	1.5
  @@ -54,7 +54,7 @@
    *                                                                           *
    * ========================================================================= */
   
  -/* @version $Id: pr_warp.h,v 1.4 2001/07/19 23:49:00 pier Exp $ */
  +/* @version $Id: pr_warp.h,v 1.5 2001/07/25 03:30:42 pier Exp $ */
   #ifndef _PR_WARP_H_
   #define _PR_WARP_H_
   
  @@ -121,6 +121,8 @@
   #define TYPE_REQ_SCHEME   0x12
   #define TYPE_REQ_AUTH     0x13
   #define TYPE_REQ_HEADER   0x14
  +#define TYPE_REQ_SERVER   0x15
  +#define TYPE_REQ_CLIENT   0x16
   #define TYPE_REQ_PROCEED  0x1f
   
   #define TYPE_RES_STATUS   0x20