This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch 10.1.x in repository https://gitbox.apache.org/repos/asf/tomcat.git
commit ae9c687f59aaaa6e27c78b8b63972b997b22d45b Author: Mark Thomas <[email protected]> AuthorDate: Fri Oct 31 14:48:04 2025 +0000 Refactor AprStatus to o.a.t.jni package The low-level connector code needs access to the status to correctly perform clean-up without triggering a crash. See subsequent commits. --- build.xml | 1 + java/org/apache/catalina/connector/Connector.java | 2 +- .../apache/catalina/core/AprLifecycleListener.java | 30 +++++++++++----------- java/org/apache/catalina/core/AprStatus.java | 30 ++++++++++------------ .../{catalina/core => tomcat/jni}/AprStatus.java | 3 +-- .../tomcat/util/net/TestClientCertTls13.java | 2 +- .../tomcat/util/net/openssl/TestOpenSSLConf.java | 2 +- 7 files changed, 34 insertions(+), 36 deletions(-) diff --git a/build.xml b/build.xml index bc25e55a52..bcf2499d4d 100644 --- a/build.xml +++ b/build.xml @@ -567,6 +567,7 @@ <include name="org/apache/tomcat/util/scan/LocalStrings.properties" /> <!-- Minimize JNI to what doesn't throw an error --> + <include name="org/apache/tomcat/jni/AprStatus.class" /> <include name="org/apache/tomcat/jni/Library.class" /> <include name="org/apache/tomcat/jni/LibraryNotFoundError*" /> <exclude name="org/apache/tomcat/jni" /> diff --git a/java/org/apache/catalina/connector/Connector.java b/java/org/apache/catalina/connector/Connector.java index 20519a0e6b..a6f71bfd08 100644 --- a/java/org/apache/catalina/connector/Connector.java +++ b/java/org/apache/catalina/connector/Connector.java @@ -29,7 +29,6 @@ import org.apache.catalina.Globals; import org.apache.catalina.LifecycleException; import org.apache.catalina.LifecycleState; import org.apache.catalina.Service; -import org.apache.catalina.core.AprStatus; import org.apache.catalina.util.LifecycleMBeanBase; import org.apache.coyote.AbstractProtocol; import org.apache.coyote.Adapter; @@ -39,6 +38,7 @@ import org.apache.coyote.http11.AbstractHttp11JsseProtocol; import org.apache.coyote.http11.AbstractHttp11Protocol; import org.apache.juli.logging.Log; import org.apache.juli.logging.LogFactory; +import org.apache.tomcat.jni.AprStatus; import org.apache.tomcat.util.IntrospectionUtils; import org.apache.tomcat.util.buf.B2CConverter; import org.apache.tomcat.util.buf.CharsetUtil; diff --git a/java/org/apache/catalina/core/AprLifecycleListener.java b/java/org/apache/catalina/core/AprLifecycleListener.java index 8393167160..c8d6976ec5 100644 --- a/java/org/apache/catalina/core/AprLifecycleListener.java +++ b/java/org/apache/catalina/core/AprLifecycleListener.java @@ -108,16 +108,16 @@ public class AprLifecycleListener implements LifecycleListener { public static boolean isAprAvailable() { // https://bz.apache.org/bugzilla/show_bug.cgi?id=48613 - if (AprStatus.isInstanceCreated()) { + if (org.apache.tomcat.jni.AprStatus.isInstanceCreated()) { synchronized (lock) { init(); } } - return AprStatus.isAprAvailable(); + return org.apache.tomcat.jni.AprStatus.isAprAvailable(); } public AprLifecycleListener() { - AprStatus.setInstanceCreated(true); + org.apache.tomcat.jni.AprStatus.setInstanceCreated(true); } // ---------------------------------------------- LifecycleListener Methods @@ -145,7 +145,7 @@ public class AprLifecycleListener implements LifecycleListener { log.info(msg); } initInfoLogMessages.clear(); - if (AprStatus.isAprAvailable()) { + if (org.apache.tomcat.jni.AprStatus.isAprAvailable()) { try { initializeSSL(); } catch (Throwable t) { @@ -172,7 +172,7 @@ public class AprLifecycleListener implements LifecycleListener { // Still being used return; } - if (!AprStatus.isAprAvailable()) { + if (!org.apache.tomcat.jni.AprStatus.isAprAvailable()) { return; } try { @@ -188,8 +188,8 @@ public class AprLifecycleListener implements LifecycleListener { } private static void terminateAPR() { - AprStatus.setAprInitialized(false); - AprStatus.setAprAvailable(false); + org.apache.tomcat.jni.AprStatus.setAprInitialized(false); + org.apache.tomcat.jni.AprStatus.setAprAvailable(false); fipsModeActive = false; sslInitialized = false; // terminate() will clean the pool // There could be unreferenced SSL_CTX still waiting for GC @@ -201,10 +201,10 @@ public class AprLifecycleListener implements LifecycleListener { 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 (AprStatus.isAprInitialized()) { + if (org.apache.tomcat.jni.AprStatus.isAprInitialized()) { return; } - AprStatus.setAprInitialized(true); + org.apache.tomcat.jni.AprStatus.setAprInitialized(true); try { Library.initialize(null); @@ -259,7 +259,7 @@ public class AprLifecycleListener implements LifecycleListener { initInfoLogMessages .add(sm.getString("aprListener.tcnValid", Library.versionString(), Library.aprVersionString())); - AprStatus.setAprAvailable(true); + org.apache.tomcat.jni.AprStatus.setAprAvailable(true); } private static void initializeSSL() throws Exception { @@ -289,7 +289,7 @@ public class AprLifecycleListener implements LifecycleListener { method = clazz.getMethod(methodName, paramTypes); method.invoke(null, paramValues); - AprStatus.setOpenSSLVersion(SSL.version()); + org.apache.tomcat.jni.AprStatus.setOpenSSLVersion(SSL.version()); // OpenSSL 3 onwards uses providers boolean usingProviders = tcnMajor > 1 || (tcnVersion > 1233 && (SSL.version() & 0xF0000000L) > 0x20000000); @@ -429,17 +429,17 @@ public class AprLifecycleListener implements LifecycleListener { } public void setUseOpenSSL(boolean useOpenSSL) { - if (useOpenSSL != AprStatus.getUseOpenSSL()) { - AprStatus.setUseOpenSSL(useOpenSSL); + if (useOpenSSL != org.apache.tomcat.jni.AprStatus.getUseOpenSSL()) { + org.apache.tomcat.jni.AprStatus.setUseOpenSSL(useOpenSSL); } } public static boolean getUseOpenSSL() { - return AprStatus.getUseOpenSSL(); + return org.apache.tomcat.jni.AprStatus.getUseOpenSSL(); } public static boolean isInstanceCreated() { - return AprStatus.isInstanceCreated(); + return org.apache.tomcat.jni.AprStatus.isInstanceCreated(); } } diff --git a/java/org/apache/catalina/core/AprStatus.java b/java/org/apache/catalina/core/AprStatus.java index bbc4f0a90e..9e6a8893a6 100644 --- a/java/org/apache/catalina/core/AprStatus.java +++ b/java/org/apache/catalina/core/AprStatus.java @@ -18,58 +18,56 @@ package org.apache.catalina.core; /** * Holds APR status without the need to load other classes. + * + * @deprecated Unused. Use {@link org.apache.tomcat.jni.AprStatus} instead. This class will be removed in Tomcat 12 + * onwards. */ +@Deprecated public class AprStatus { - private static volatile boolean aprInitialized = false; - private static volatile boolean aprAvailable = false; - private static volatile boolean useOpenSSL = true; - private static volatile boolean instanceCreated = false; - private static volatile int openSSLVersion = 0; public static boolean isAprInitialized() { - return aprInitialized; + return org.apache.tomcat.jni.AprStatus.isAprInitialized(); } public static boolean isAprAvailable() { - return aprAvailable; + return org.apache.tomcat.jni.AprStatus.isAprAvailable(); } public static boolean getUseOpenSSL() { - return useOpenSSL; + return org.apache.tomcat.jni.AprStatus.getUseOpenSSL(); } public static boolean isInstanceCreated() { - return instanceCreated; + return org.apache.tomcat.jni.AprStatus.isInstanceCreated(); } public static void setAprInitialized(boolean aprInitialized) { - AprStatus.aprInitialized = aprInitialized; + org.apache.tomcat.jni.AprStatus.setAprInitialized(aprInitialized); } public static void setAprAvailable(boolean aprAvailable) { - AprStatus.aprAvailable = aprAvailable; + org.apache.tomcat.jni.AprStatus.setAprAvailable(aprAvailable); } public static void setUseOpenSSL(boolean useOpenSSL) { - AprStatus.useOpenSSL = useOpenSSL; + org.apache.tomcat.jni.AprStatus.setUseOpenSSL(useOpenSSL); } public static void setInstanceCreated(boolean instanceCreated) { - AprStatus.instanceCreated = instanceCreated; + org.apache.tomcat.jni.AprStatus.setInstanceCreated(instanceCreated); } /** * @return the openSSLVersion */ public static int getOpenSSLVersion() { - return openSSLVersion; + return org.apache.tomcat.jni.AprStatus.getOpenSSLVersion(); } /** * @param openSSLVersion the openSSLVersion to set */ public static void setOpenSSLVersion(int openSSLVersion) { - AprStatus.openSSLVersion = openSSLVersion; + org.apache.tomcat.jni.AprStatus.setOpenSSLVersion(openSSLVersion); } - } diff --git a/java/org/apache/catalina/core/AprStatus.java b/java/org/apache/tomcat/jni/AprStatus.java similarity index 98% copy from java/org/apache/catalina/core/AprStatus.java copy to java/org/apache/tomcat/jni/AprStatus.java index bbc4f0a90e..d255b2ba76 100644 --- a/java/org/apache/catalina/core/AprStatus.java +++ b/java/org/apache/tomcat/jni/AprStatus.java @@ -14,7 +14,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.catalina.core; +package org.apache.tomcat.jni; /** * Holds APR status without the need to load other classes. @@ -71,5 +71,4 @@ public class AprStatus { public static void setOpenSSLVersion(int openSSLVersion) { AprStatus.openSSLVersion = openSSLVersion; } - } diff --git a/test/org/apache/tomcat/util/net/TestClientCertTls13.java b/test/org/apache/tomcat/util/net/TestClientCertTls13.java index 4cac01286a..0b103fa40c 100644 --- a/test/org/apache/tomcat/util/net/TestClientCertTls13.java +++ b/test/org/apache/tomcat/util/net/TestClientCertTls13.java @@ -31,9 +31,9 @@ import org.junit.runners.Parameterized.Parameter; import org.apache.catalina.Lifecycle; import org.apache.catalina.LifecycleEvent; import org.apache.catalina.connector.Connector; -import org.apache.catalina.core.AprStatus; import org.apache.catalina.startup.Tomcat; import org.apache.catalina.startup.TomcatBaseTest; +import org.apache.tomcat.jni.AprStatus; import org.apache.tomcat.util.buf.ByteChunk; import org.apache.tomcat.util.net.openssl.OpenSSLStatus; diff --git a/test/org/apache/tomcat/util/net/openssl/TestOpenSSLConf.java b/test/org/apache/tomcat/util/net/openssl/TestOpenSSLConf.java index 46f07d0ac6..3183eae5bf 100644 --- a/test/org/apache/tomcat/util/net/openssl/TestOpenSSLConf.java +++ b/test/org/apache/tomcat/util/net/openssl/TestOpenSSLConf.java @@ -39,11 +39,11 @@ import org.apache.catalina.LifecycleEvent; import org.apache.catalina.LifecycleListener; import org.apache.catalina.connector.Connector; import org.apache.catalina.core.AprLifecycleListener; -import org.apache.catalina.core.AprStatus; import org.apache.catalina.core.OpenSSLLifecycleListener; import org.apache.catalina.core.StandardServer; import org.apache.catalina.startup.Tomcat; import org.apache.catalina.startup.TomcatBaseTest; +import org.apache.tomcat.jni.AprStatus; import org.apache.tomcat.jni.SSLContext; import org.apache.tomcat.util.net.SSLHostConfig; import org.apache.tomcat.util.net.TesterSupport; --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
