This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/master by this push: new 0aa5a8d Java Servlet -> Jakarta Servlet request attributes for AJP Connector 0aa5a8d is described below commit 0aa5a8de8c24f79df4da3f3135eee5dd2e54c2ba Author: Mark Thomas <ma...@apache.org> AuthorDate: Tue Jan 21 17:49:54 2020 +0000 Java Servlet -> Jakarta Servlet request attributes for AJP Connector --- java/org/apache/coyote/ajp/AjpProcessor.java | 18 ++++++++++++++++++ webapps/docs/changelog.xml | 4 ++++ 2 files changed, 22 insertions(+) diff --git a/java/org/apache/coyote/ajp/AjpProcessor.java b/java/org/apache/coyote/ajp/AjpProcessor.java index 01e7d3d..0c593ba 100644 --- a/java/org/apache/coyote/ajp/AjpProcessor.java +++ b/java/org/apache/coyote/ajp/AjpProcessor.java @@ -25,6 +25,9 @@ import java.nio.ByteBuffer; import java.security.NoSuchProviderException; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; import jakarta.servlet.http.HttpServletResponse; @@ -78,6 +81,9 @@ public class AjpProcessor extends AbstractProcessor { private static final byte[] pongMessageArray; + private static final Map<String,String> jakartaAttributeMapping; + + static { // Allocate the end message array AjpMessage endMessage = new AjpMessage(16); @@ -118,6 +124,14 @@ public class AjpProcessor extends AbstractProcessor { pongMessageArray = new byte[pongMessage.getLen()]; System.arraycopy(pongMessage.getBuffer(), 0, pongMessageArray, 0, pongMessage.getLen()); + + // Build Map of Java Servlet to Jakarta Servlet attribute names + Map<String,String> m = new HashMap<>(); + m.put("javax.servlet.request.cipher_suite", "jakarta.servlet.request.cipher_suite"); + m.put("javax.servlet.request.key_size", "jakarta.servlet.request.key_size"); + m.put("javax.servlet.request.ssl_session", "jakarta.servlet.request.ssl_session"); + m.put("javax.servlet.request.X509Certificate", "jakarta.servlet.request.X509Certificate"); + jakartaAttributeMapping = Collections.unmodifiableMap(m); } @@ -728,6 +742,10 @@ public class AjpProcessor extends AbstractProcessor { } } else if(n.equals(Constants.SC_A_SSL_PROTOCOL)) { request.setAttribute(SSLSupport.PROTOCOL_VERSION_KEY, v); + } else if (jakartaAttributeMapping.containsKey(n)) { + // AJP uses the Java Servlet attribute names. + // Need to convert these to Jakarta SAervlet. + request.setAttribute(jakartaAttributeMapping.get(n), v); } else { request.setAttribute(n, v ); } diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 33fceaa..d7324e1 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -72,6 +72,10 @@ <update> Remove unused NIO blocking selector. (remm) </update> + <add> + When using an AJP Connector, convert Java Servlet specific request + attributes to the Jakarta Servlet equivalent. (markt) + </add> </changelog> </subsection> <subsection name="Other"> --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org