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