This is an automated email from the ASF dual-hosted git repository.
markt pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/main by this push:
new 666456c1cf Update minimum Tomcat Native version to 1.3.4/2.0.12
666456c1cf is described below
commit 666456c1cff8a23c44b92f033d50fdce9874266e
Author: Mark Thomas <[email protected]>
AuthorDate: Mon Jan 12 15:55:30 2026 +0000
Update minimum Tomcat Native version to 1.3.4/2.0.12
This is in preparation for adding TLS 1.3 config support and expanding
the OCSP config support
---
.../apache/catalina/core/AprLifecycleListener.java | 54 +++++++++++++++++-----
.../apache/catalina/core/LocalStrings.properties | 4 +-
webapps/docs/changelog.xml | 6 +++
3 files changed, 52 insertions(+), 12 deletions(-)
diff --git a/java/org/apache/catalina/core/AprLifecycleListener.java
b/java/org/apache/catalina/core/AprLifecycleListener.java
index bf047c362d..d10d9591fe 100644
--- a/java/org/apache/catalina/core/AprLifecycleListener.java
+++ b/java/org/apache/catalina/core/AprLifecycleListener.java
@@ -64,12 +64,17 @@ public class AprLifecycleListener implements
LifecycleListener {
// ---------------------------------------------- Constants
- protected static final int TCN_REQUIRED_MAJOR = 1;
- protected static final int TCN_REQUIRED_MINOR = 2;
- protected static final int TCN_REQUIRED_PATCH = 34;
+ private static final int TCN_1_REQUIRED_MINOR = 3;
+ private static final int TCN_1_REQUIRED_PATCH = 4;
+ private static final int TCN_1_RECOMMENDED_MINOR = 3;
+ private static final int TCN_1_RECOMMENDED_PATCH = 4;
+
+ protected static final int TCN_REQUIRED_MAJOR = 2;
+ protected static final int TCN_REQUIRED_MINOR = 0;
+ protected static final int TCN_REQUIRED_PATCH = 12;
protected static final int TCN_RECOMMENDED_MAJOR = 2;
protected static final int TCN_RECOMMENDED_MINOR = 0;
- protected static final int TCN_RECOMMENDED_PV = 5;
+ protected static final int TCN_RECOMMENDED_PV = 12;
// ---------------------------------------------- Properties
@@ -209,9 +214,6 @@ public class AprLifecycleListener implements
LifecycleListener {
}
private static void init() {
- int rqver = TCN_REQUIRED_MAJOR * 1000 + TCN_REQUIRED_MINOR * 100 +
TCN_REQUIRED_PATCH;
- int rcver = TCN_RECOMMENDED_MAJOR * 1000 + TCN_RECOMMENDED_MINOR * 100
+ TCN_RECOMMENDED_PV;
-
if (org.apache.tomcat.jni.AprStatus.isAprInitialized()) {
return;
}
@@ -249,9 +251,34 @@ public class AprLifecycleListener implements
LifecycleListener {
}
return;
}
+
+ /*
+ * With parallel development of 1.x and 2.x there are now minimum and
recommended versions for both branches.
+ *
+ * The minimum required version is increased when the Tomcat Native
API is changed (typically extended) to
+ * include functionality that Tomcat expects to always be present.
+ *
+ * The minimum recommended version is increased when there is a change
in Tomcat Native that while not required
+ * is recommended (such as bug fixes).
+ */
+ int rqver;
+ int rcver;
+ if (tcnMajor == 1) {
+ rqver = 1000 + TCN_1_REQUIRED_MINOR * 100 + TCN_1_REQUIRED_PATCH;
+ rcver = 1000 + TCN_1_RECOMMENDED_MINOR * 100 +
TCN_1_RECOMMENDED_PATCH;
+ } else {
+ rqver = TCN_REQUIRED_MAJOR * 1000 + TCN_REQUIRED_MINOR * 100 +
TCN_REQUIRED_PATCH;
+ rcver = TCN_RECOMMENDED_MAJOR * 1000 + TCN_RECOMMENDED_MINOR * 100
+ TCN_RECOMMENDED_PV;
+ }
+
if (tcnVersion < rqver) {
- log.error(sm.getString("aprListener.tcnInvalid",
Library.versionString(),
- TCN_REQUIRED_MAJOR + "." + TCN_REQUIRED_MINOR + "." +
TCN_REQUIRED_PATCH));
+ if (tcnMajor == 1) {
+ log.error(sm.getString("aprListener.tcnInvalid.1",
Library.versionString(),
+ "1." + TCN_1_REQUIRED_MINOR + "." +
TCN_1_REQUIRED_PATCH));
+ } else {
+ log.error(sm.getString("aprListener.tcnInvalid",
Library.versionString(),
+ TCN_REQUIRED_MAJOR + "." + TCN_REQUIRED_MINOR + "." +
TCN_REQUIRED_PATCH));
+ }
try {
// Terminate the APR in case the version
// is below required.
@@ -263,8 +290,13 @@ public class AprLifecycleListener implements
LifecycleListener {
return;
}
if (tcnVersion < rcver) {
- initInfoLogMessages.add(sm.getString("aprListener.tcnVersion",
Library.versionString(),
- TCN_RECOMMENDED_MAJOR + "." + TCN_RECOMMENDED_MINOR + "."
+ TCN_RECOMMENDED_PV));
+ if (tcnMajor == 1) {
+
initInfoLogMessages.add(sm.getString("aprListener.tcnVersion.1",
Library.versionString(),
+ "1." + TCN_1_RECOMMENDED_MINOR + "." +
TCN_1_RECOMMENDED_PATCH));
+ } else {
+ initInfoLogMessages.add(sm.getString("aprListener.tcnVersion",
Library.versionString(),
+ TCN_RECOMMENDED_MAJOR + "." + TCN_RECOMMENDED_MINOR +
"." + TCN_RECOMMENDED_PV));
+ }
}
initInfoLogMessages
diff --git a/java/org/apache/catalina/core/LocalStrings.properties
b/java/org/apache/catalina/core/LocalStrings.properties
index 31602e7018..37d1805d6f 100644
--- a/java/org/apache/catalina/core/LocalStrings.properties
+++ b/java/org/apache/catalina/core/LocalStrings.properties
@@ -84,9 +84,11 @@ aprListener.requireNotInFIPSMode=AprLifecycleListener is
configured to require t
aprListener.skipFIPSInitialization=Already in FIPS mode; skipping FIPS
initialization.
aprListener.sslInit=Failed to initialize the SSLEngine.
aprListener.sslRequired=[{0}] is not a valid value for SSLEngine when using
version [{1}] of the Tomcat Native library since SSL is required for version
2.x onwards.
-aprListener.tcnInvalid=An incompatible version [{0}] of the Apache Tomcat
Native library is installed, while Tomcat requires version [{1}]
+aprListener.tcnInvalid=An incompatible version [{0}] of the Apache Tomcat
Native library is installed, while Tomcat requires at least version [{1}]
+aprListener.tcnInvalid.1=An incompatible version [{0}] of the Apache Tomcat
Native library is installed, while Tomcat requires at least version [{1}] of
Tomcat Native 1.x
aprListener.tcnValid=Loaded Apache Tomcat Native library [{0}] using APR
version [{1}].
aprListener.tcnVersion=An older version [{0}] of the Apache Tomcat Native
library is installed, while Tomcat recommends a minimum version of [{1}]
+aprListener.tcnVersion.1=An older version [{0}] of the Apache Tomcat Native
library is installed, while Tomcat recommends a minimum version of [{1}] of
Tomcat Native 1.x
aprListener.tooLateForFIPSMode=Cannot setFIPSMode: SSL has already been
initialized
aprListener.tooLateForSSLEngine=Cannot setSSLEngine: SSL has already been
initialized
aprListener.tooLateForSSLRandomSeed=Cannot setSSLRandomSeed: SSL has already
been initialized
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 569684ca84..4a1d0e3369 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -205,6 +205,12 @@
<bug>69918</bug>: Ensure request parameters are correctly parsed for
HTTP/2 requests
when the content-length header is not set. (dsoumis)
</fix>
+ <update>
+ Enable minimum and recommended Tomcat Native versions to be set
+ separately for Tomcat Native 1.x and 2.x. Update the minimum and
+ recommended versions for Tomcat Native 1.x to 1.3.4. Update the minimum
+ and recommended versions for Tomcat Native 2.x to 2.0.12. (markt)
+ </update>
</changelog>
</subsection>
<subsection name="Coyote">
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]