This is an automated email from the ASF dual-hosted git repository.
markt pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/9.0.x by this push:
new d1882d0389 Simplify logic and only test aprStatusPresent when needed
d1882d0389 is described below
commit d1882d0389dc5ae6f6e32d20fc7f141326aa8779
Author: Mark Thomas <[email protected]>
AuthorDate: Mon Nov 24 22:06:04 2025 +0000
Simplify logic and only test aprStatusPresent when needed
Add extra test for o.a.t.jni package if APR connector is used.
---
java/org/apache/catalina/connector/Connector.java | 32 ++++++++++------------
.../catalina/connector/LocalStrings.properties | 1 +
2 files changed, 16 insertions(+), 17 deletions(-)
diff --git a/java/org/apache/catalina/connector/Connector.java
b/java/org/apache/catalina/connector/Connector.java
index a10ed79e36..2f2915dce8 100644
--- a/java/org/apache/catalina/connector/Connector.java
+++ b/java/org/apache/catalina/connector/Connector.java
@@ -36,7 +36,6 @@ import org.apache.coyote.Adapter;
import org.apache.coyote.ProtocolHandler;
import org.apache.coyote.UpgradeProtocol;
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;
@@ -1051,6 +1050,10 @@ public class Connector extends LifecycleMBeanBase {
setParseBodyMethods(getParseBodyMethods());
}
+ if (protocolHandler.isAprRequired() && !aprStatusPresent) {
+ throw new LifecycleException(
+
sm.getString("coyoteConnector.protocolHandlerNoJniPackage",
getProtocolHandlerClassName()));
+ }
if (protocolHandler.isAprRequired() && !AprStatus.isInstanceCreated())
{
throw new LifecycleException(
sm.getString("coyoteConnector.protocolHandlerNoAprListener",
getProtocolHandlerClassName()));
@@ -1059,24 +1062,19 @@ public class Connector extends LifecycleMBeanBase {
throw new LifecycleException(
sm.getString("coyoteConnector.protocolHandlerNoAprLibrary",
getProtocolHandlerClassName()));
}
- if (!protocolHandler.isAprRequired()) {
- if (JreCompat.isJre22Available() && OpenSSLStatus.getUseOpenSSL()
&& OpenSSLStatus.isAvailable() &&
- protocolHandler instanceof AbstractHttp11Protocol) {
- // Use FFM and OpenSSL if available
- AbstractHttp11JsseProtocol<?> jsseProtocolHandler =
(AbstractHttp11JsseProtocol<?>) protocolHandler;
- if (jsseProtocolHandler.isSSLEnabled() &&
jsseProtocolHandler.getSslImplementationName() == null) {
- // OpenSSL is compatible with the JSSE configuration, so
use it if it is available
- jsseProtocolHandler.setSslImplementationName(
-
"org.apache.tomcat.util.net.openssl.panama.OpenSSLImplementation");
- }
- } else if (aprStatusPresent && AprStatus.isAprAvailable() &&
AprStatus.getUseOpenSSL() &&
- protocolHandler instanceof AbstractHttp11Protocol) {
- // Use tomcat-native and OpenSSL otherwise, if available
- AbstractHttp11JsseProtocol<?> jsseProtocolHandler =
(AbstractHttp11JsseProtocol<?>) protocolHandler;
- if (jsseProtocolHandler.isSSLEnabled() &&
jsseProtocolHandler.getSslImplementationName() == null) {
- // OpenSSL is compatible with the JSSE configuration, so
use it if APR is available
+ if (protocolHandler instanceof AbstractHttp11JsseProtocol) {
+ AbstractHttp11JsseProtocol<?> jsseProtocolHandler =
(AbstractHttp11JsseProtocol<?>) protocolHandler;
+ if (jsseProtocolHandler.isSSLEnabled() &&
jsseProtocolHandler.getSslImplementationName() == null) {
+ // If SSL is enabled and a specific implementation isn't
specified, select the correct default.
+ if (JreCompat.isJre22Available() &&
OpenSSLStatus.getUseOpenSSL() && OpenSSLStatus.isAvailable()) {
+ // Use FFM and OpenSSL if available
+ jsseProtocolHandler
+
.setSslImplementationName("org.apache.tomcat.util.net.openssl.panama.OpenSSLImplementation");
+ } else if (aprStatusPresent && AprStatus.isAprAvailable() &&
AprStatus.getUseOpenSSL()) {
+ // Use tomcat-native and OpenSSL otherwise, if available
jsseProtocolHandler.setSslImplementationName(OpenSSLImplementation.class.getName());
}
+ // Otherwise the default JSSE will be used
}
}
diff --git a/java/org/apache/catalina/connector/LocalStrings.properties
b/java/org/apache/catalina/connector/LocalStrings.properties
index 74b021e4b4..cc43ed06fe 100644
--- a/java/org/apache/catalina/connector/LocalStrings.properties
+++ b/java/org/apache/catalina/connector/LocalStrings.properties
@@ -36,6 +36,7 @@ coyoteConnector.parseBodyMethodNoTrace=TRACE method MUST NOT
include an entity (
coyoteConnector.protocolHandlerDestroyFailed=Protocol handler destroy failed
coyoteConnector.protocolHandlerInitializationFailed=Protocol handler
initialization failed
coyoteConnector.protocolHandlerInstantiationFailed=Protocol handler
instantiation failed
+coyoteConnector.protocolHandlerNoJniPackage=The configured protocol [{0}]
requires the org.apache.tomcat.jni package which is not available
coyoteConnector.protocolHandlerNoAprLibrary=The configured protocol [{0}]
requires the APR/native library which is not available
coyoteConnector.protocolHandlerNoAprListener=The configured protocol [{0}]
requires the AprLifecycleListener which is not available
coyoteConnector.protocolHandlerPauseFailed=Protocol handler pause failed
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]