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]

Reply via email to