Changes with Apache 2.3.3
+ *) mod_proxy_ajp: Forward remote port information by default.
+ [Rainer Jung]
+
*) Allow MPMs to be loaded dynamically, as with most other modules. This
required changes to the MPM interfaces. Removed: mpm.h, mpm_default.h
(as an installed header), APACHE_MPM_DIR, MPM_NAME, ap_threads_per_child,
}
}
}
+ /* Forward the remote port information, which was forgotten
+ * from the builtin data of the AJP 13 protocol.
+ * Since the servlet spec allows to retrieve it via getRemotePort(),
+ * we provide the port to the Tomcat connector as a request
+ * attribute. Modern Tomcat versions know how to retrieve
+ * the remote port from this attribute.
+ */
+ {
+ const char *key = SC_A_REQ_REMOTE_PORT;
+ char *val = apr_itoa(r->pool, r->connection->remote_addr->port);
+ if (ajp_msg_append_uint8(msg, SC_A_REQ_ATTRIBUTE) ||
+ ajp_msg_append_string(msg, key) ||
+ ajp_msg_append_string(msg, val)) {
+ ap_log_error(APLOG_MARK, APLOG_ERR, 0, r->server,
+ "ajp_marshal_into_msgb: "
+ "Error appending attribute %s=%s",
+ key, val);
+ return AJP_EOVERFLOW;
+ }
+ }
/* Use the environment vars prefixed with AJP_
* and pass it to the header striping that prefix.
*/
#define SC_A_SECRET (unsigned char)12
#define SC_A_ARE_DONE (unsigned char)0xFF
+/*
+ * AJP private request attributes
+ *
+ * The following request attribute is recognized by Tomcat
+ * to contain the forwarded remote port.
+ */
+#define SC_A_REQ_REMOTE_PORT ("AJP_REMOTE_PORT")
+
/*
* Request methods, coded as numbers instead of strings.
* The list of methods was taken from Section 5.1.1 of RFC 2616,