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 <mailto:[EMAIL PROTECTED]> - * @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