Author: rjung Date: Mon Mar 23 17:54:41 2009 New Revision: 757470 URL: http://svn.apache.org/viewvc?rev=757470&view=rev Log: Set remote port for AJP connectors from the optional request attribute AJP_REMOTE_PORT.
Backport of r756926 and r757223. Modified: tomcat/tc6.0.x/trunk/STATUS.txt tomcat/tc6.0.x/trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java tomcat/tc6.0.x/trunk/java/org/apache/coyote/ajp/AjpProcessor.java tomcat/tc6.0.x/trunk/java/org/apache/coyote/ajp/Constants.java tomcat/tc6.0.x/trunk/java/org/apache/jk/common/AjpConstants.java tomcat/tc6.0.x/trunk/java/org/apache/jk/common/HandlerRequest.java tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Modified: tomcat/tc6.0.x/trunk/STATUS.txt URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/STATUS.txt?rev=757470&r1=757469&r2=757470&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/STATUS.txt (original) +++ tomcat/tc6.0.x/trunk/STATUS.txt Mon Mar 23 17:54:41 2009 @@ -118,21 +118,3 @@ Backport of http://svn.apache.org/viewvc?rev=755302&view=rev +1: rjung, fhanik, pero -1: - -* Allow AJP connectors to provide correct getRemotePort(). - The remote port is not part of the AJP13 protocol. - Since the protocol is not extensible enough for standard - attributes, we use generic attributes mechanism to forward - the remote port. - Backport of http://svn.apache.org/viewvc?rev=756926&view=rev - and http://svn.apache.org/viewvc?rev=757223&view=rev - +1: rjung, pero, mturk, billbarker - -1: - mturk: Perhaps we should consider prefixing all those private - variables with AJP_ so that is clear this is AJP protocol - extension environment variable. - pero: But REMOTE_PORT is a existing apache httpd env var! +1 for prefixing. - What we can do at mod_jk/IIS? - rjung: I changed the name and we will *only* use the forwarded data - for setting the port and not set it as a request attribute. - IIS: will be handled similarly. Modified: tomcat/tc6.0.x/trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java?rev=757470&r1=757469&r2=757470&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/coyote/ajp/AjpAprProcessor.java Mon Mar 23 17:54:41 2009 @@ -706,7 +706,21 @@ String n = tmpMB.toString(); requestHeaderMessage.getBytes(tmpMB); String v = tmpMB.toString(); - request.setAttribute(n, v); + /* + * AJP13 misses to forward the remotePort. + * Allow the AJP connector to add this info via + * a private request attribute. + * We will accept the forwarded data as the remote port, + * and remove it from the public list of request attributes. + */ + if(n.equals(Constants.SC_A_REQ_REMOTE_PORT)) { + try { + request.setRemotePort(Integer.parseInt(v)); + } catch (NumberFormatException nfe) { + } + } else { + request.setAttribute(n, v ); + } break; case Constants.SC_A_CONTEXT : Modified: tomcat/tc6.0.x/trunk/java/org/apache/coyote/ajp/AjpProcessor.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/coyote/ajp/AjpProcessor.java?rev=757470&r1=757469&r2=757470&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/coyote/ajp/AjpProcessor.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/coyote/ajp/AjpProcessor.java Mon Mar 23 17:54:41 2009 @@ -712,7 +712,21 @@ String n = tmpMB.toString(); requestHeaderMessage.getBytes(tmpMB); String v = tmpMB.toString(); - request.setAttribute(n, v); + /* + * AJP13 misses to forward the remotePort. + * Allow the AJP connector to add this info via + * a private request attribute. + * We will accept the forwarded data as the remote port, + * and remove it from the public list of request attributes. + */ + if(n.equals(Constants.SC_A_REQ_REMOTE_PORT)) { + try { + request.setRemotePort(Integer.parseInt(v)); + } catch (NumberFormatException nfe) { + } + } else { + request.setAttribute(n, v ); + } break; case Constants.SC_A_CONTEXT : Modified: tomcat/tc6.0.x/trunk/java/org/apache/coyote/ajp/Constants.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/coyote/ajp/Constants.java?rev=757470&r1=757469&r2=757470&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/coyote/ajp/Constants.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/coyote/ajp/Constants.java Mon Mar 23 17:54:41 2009 @@ -88,6 +88,11 @@ // Used for attributes which are not in the list above public static final byte SC_A_REQ_ATTRIBUTE = 10; + /** + * AJP private request attributes + */ + public static final String SC_A_REQ_REMOTE_PORT = "AJP_REMOTE_PORT"; + // Terminates list of attributes public static final byte SC_A_ARE_DONE = (byte)0xFF; Modified: tomcat/tc6.0.x/trunk/java/org/apache/jk/common/AjpConstants.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/jk/common/AjpConstants.java?rev=757470&r1=757469&r2=757470&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/jk/common/AjpConstants.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/jk/common/AjpConstants.java Mon Mar 23 17:54:41 2009 @@ -97,6 +97,11 @@ public static final byte SC_A_REQ_ATTRIBUTE = 10; /** + * AJP private request attributes + */ + public static final String SC_A_REQ_REMOTE_PORT = "AJP_REMOTE_PORT"; + + /** * Terminates list of attributes */ public static final byte SC_A_ARE_DONE = (byte)0xFF; Modified: tomcat/tc6.0.x/trunk/java/org/apache/jk/common/HandlerRequest.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/jk/common/HandlerRequest.java?rev=757470&r1=757469&r2=757470&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/jk/common/HandlerRequest.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/jk/common/HandlerRequest.java Mon Mar 23 17:54:41 2009 @@ -455,9 +455,23 @@ String n=tmpMB.toString(); msg.getBytes( tmpMB ); String v=tmpMB.toString(); - req.setAttribute(n, v ); - if(log.isTraceEnabled()) - log.trace("jk Attribute set " + n + "=" + v); + /* + * AJP13 misses to forward the remotePort. + * Allow the AJP connector to add this info via + * a private request attribute. + * We will accept the forwarded data as the remote port, + * and remove it from the public list of request attributes. + */ + if(n.equals(AjpConstants.SC_A_REQ_REMOTE_PORT)) { + try { + req.setRemotePort(Integer.parseInt(v)); + } catch (NumberFormatException nfe) { + } + } else { + req.setAttribute(n, v ); + if(log.isTraceEnabled()) + log.trace("jk Attribute set " + n + "=" + v); + } } Modified: tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml?rev=757470&r1=757469&r2=757470&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original) +++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Mon Mar 23 17:54:41 2009 @@ -33,6 +33,14 @@ <body> <section name="Tomcat 6.0.20 (remm)"> + <subsection name="Coyote"> + <changelog> + <update> + Set remote port for AJP connectors from the optional request + attribute AJP_REMOTE_PORT. (rjung) + </update> + </changelog> + </subsection> <subsection name="Webapps"> <changelog> <fix> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org