On Tue, Jan 13, 2026 at 12:26 AM Mark Thomas <[email protected]> wrote:
> On 12/01/2026 18:10, Christopher Schultz wrote: > > Mark, > > > > Should this kind of thing go under "Notable Changes"? > > > > https://tomcat.apache.org/ > > migration-11.0.html#Tomcat_11.0.x_noteable_changes > > > > I ask because updating tcnative on *NIX is a whole separate process, and > > should probably be done before attempting to upgrade Tomcat itself. > > Yes, it probably should. Remind me if I forget to do that when I update > the site after the release. > Kind reminder regarding the above. > > Mark > > > > > > -chris > > > > On 1/12/26 10:55 AM, [email protected] wrote: > >> 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] > >> > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [email protected] > > For additional commands, e-mail: [email protected] > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > >
