Skip to content

Commit 55f2a7b

Browse files
authored
Merge pull request #45185 from franz1981/ssl
Sys prop configuration to leverage SSL heap buffer pooling
2 parents 969b378 + 49ee0bc commit 55f2a7b

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/options/HttpServerOptionsUtils.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,15 @@
3939
import io.vertx.core.http.HttpVersion;
4040
import io.vertx.core.net.JdkSSLEngineOptions;
4141
import io.vertx.core.net.KeyCertOptions;
42+
import io.vertx.core.net.TCPSSLOptions;
4243
import io.vertx.core.net.TrafficShapingOptions;
4344
import io.vertx.core.net.TrustOptions;
4445

4546
@SuppressWarnings("OptionalIsPresent")
4647
public class HttpServerOptionsUtils {
4748

49+
private static final boolean JDK_SSL_BUFFER_POOLING = Boolean.getBoolean("quarkus.http.server.ssl.jdk.bufferPooling");
50+
4851
/**
4952
* When the http port is set to 0, replace it by this value to let Vert.x choose a random port
5053
*/
@@ -172,6 +175,7 @@ private static void applySslConfigToHttpServerOptions(ServerSslConfig httpConfig
172175
serverOptions.setEnabledSecureTransportProtocols(sslConfig.protocols);
173176
serverOptions.setSsl(true);
174177
serverOptions.setSni(sslConfig.sni);
178+
setJdkHeapBufferPooling(serverOptions);
175179
}
176180

177181
/**
@@ -214,6 +218,7 @@ public static HttpServerOptions createSslOptionsForManagementInterface(Managemen
214218

215219
public static void applyTlsConfigurationToHttpServerOptions(TlsConfiguration bucket, HttpServerOptions serverOptions) {
216220
serverOptions.setSsl(true);
221+
setJdkHeapBufferPooling(serverOptions);
217222

218223
KeyCertOptions keyStoreOptions = bucket.getKeyStoreOptions();
219224
TrustOptions trustStoreOptions = bucket.getTrustStoreOptions();
@@ -240,6 +245,20 @@ public static void applyTlsConfigurationToHttpServerOptions(TlsConfiguration buc
240245
serverOptions.setEnabledSecureTransportProtocols(other.getEnabledSecureTransportProtocols());
241246
}
242247

248+
private static void setJdkHeapBufferPooling(TCPSSLOptions tcpSslOptions) {
249+
if (!JDK_SSL_BUFFER_POOLING) {
250+
return;
251+
}
252+
var engineOption = tcpSslOptions.getSslEngineOptions();
253+
if (engineOption == null) {
254+
var jdkEngineOptions = new JdkSSLEngineOptions();
255+
jdkEngineOptions.setPooledHeapBuffers(true);
256+
tcpSslOptions.setSslEngineOptions(jdkEngineOptions);
257+
} else if (engineOption instanceof JdkSSLEngineOptions jdkEngineOptions) {
258+
jdkEngineOptions.setPooledHeapBuffers(true);
259+
}
260+
}
261+
243262
public static Optional<String> getCredential(Optional<String> password, Map<String, String> credentials,
244263
Optional<String> passwordKey) {
245264
if (password.isPresent()) {

0 commit comments

Comments
 (0)