Skip to content

Commit

Permalink
fix #803 Do not force NIO transport if JdkSslContext detected
Browse files Browse the repository at this point in the history
Signed-off-by: Stephane Maldini <smaldini@pivotal.io>
  • Loading branch information
Stephane Maldini committed Jul 31, 2019
1 parent 60a5fc0 commit 9a74a01
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 24 deletions.
Expand Up @@ -130,12 +130,7 @@ public Mono<? extends Connection> connect(Bootstrap b) {

LoopResources loops = HttpResources.get();

SslContext sslContext = ssl != null ? ssl.getSslContext() : null;

boolean useNative =
LoopResources.DEFAULT_NATIVE && !(sslContext instanceof JdkSslContext);

EventLoopGroup elg = loops.onClient(useNative);
EventLoopGroup elg = loops.onClient(LoopResources.DEFAULT_NATIVE);

Integer maxConnections = (Integer) b.config().attrs().get(AttributeKey.valueOf("maxConnections"));

Expand Down
7 changes: 2 additions & 5 deletions src/main/java/reactor/netty/http/server/HttpServerBind.java
Expand Up @@ -119,11 +119,8 @@ public ServerBootstrap apply(ServerBootstrap b) {
.group() == null) {
LoopResources loops = HttpResources.get();

boolean useNative =
LoopResources.DEFAULT_NATIVE || (ssl != null && !(ssl.getSslContext() instanceof JdkSslContext));

EventLoopGroup selector = loops.onServerSelect(useNative);
EventLoopGroup elg = loops.onServer(useNative);
EventLoopGroup selector = loops.onServerSelect(LoopResources.DEFAULT_NATIVE);
EventLoopGroup elg = loops.onServer(LoopResources.DEFAULT_NATIVE);

b.group(selector, elg)
.channel(loops.onServerChannel(elg));
Expand Down
7 changes: 1 addition & 6 deletions src/main/java/reactor/netty/tcp/TcpClientRunOn.java
Expand Up @@ -52,12 +52,7 @@ static void configure(Bootstrap b,
boolean preferNative,
LoopResources resources,
boolean useDelegate) {
SslProvider sslProvider = SslProvider.findSslSupport(b);

boolean useNative = preferNative &&
(sslProvider == null || !(sslProvider.sslContext instanceof JdkSslContext));

EventLoopGroup elg = resources.onClient(useNative);
EventLoopGroup elg = resources.onClient(preferNative);

if (useDelegate && elg instanceof Supplier) {
EventLoopGroup delegate = (EventLoopGroup) ((Supplier) elg).get();
Expand Down
7 changes: 2 additions & 5 deletions src/main/java/reactor/netty/tcp/TcpServerRunOn.java
Expand Up @@ -49,12 +49,9 @@ public ServerBootstrap configure() {
static void configure(ServerBootstrap b,
boolean preferNative,
LoopResources resources) {
SslProvider sslProvider = SslProvider.findSslSupport(b);

boolean useNative = preferNative &&
(sslProvider == null || !(sslProvider.sslContext instanceof JdkSslContext));
EventLoopGroup selectorGroup = resources.onServerSelect(useNative);
EventLoopGroup elg = resources.onServer(useNative);
EventLoopGroup selectorGroup = resources.onServerSelect(preferNative);
EventLoopGroup elg = resources.onServer(preferNative);

b.group(selectorGroup, elg)
.channel(resources.onServerChannel(elg));
Expand Down
10 changes: 8 additions & 2 deletions src/test/java/reactor/netty/tcp/TcpServerTests.java
Expand Up @@ -52,6 +52,7 @@
import io.netty.handler.codec.json.JsonObjectDecoder;
import io.netty.handler.ssl.SslContext;
import io.netty.handler.ssl.SslContextBuilder;
import io.netty.handler.ssl.SslProvider;
import io.netty.handler.ssl.util.InsecureTrustManagerFactory;
import io.netty.handler.ssl.util.SelfSignedCertificate;
import io.netty.util.NetUtil;
Expand Down Expand Up @@ -112,14 +113,19 @@ public void cleanup() {
}

@Test
public void tcpServerHandlesJsonPojosOverSsl() throws Exception {
public void tcpServerHandlesJsonPojosOverSsl() throws Exception {
final CountDownLatch latch = new CountDownLatch(2);

SelfSignedCertificate cert = new SelfSignedCertificate();
SslContextBuilder serverOptions = SslContextBuilder.forServer(cert.certificate(), cert.privateKey());
SslContextBuilder serverOptions = SslContextBuilder.forServer(cert.certificate(), cert.privateKey())
.sslProvider(SslProvider.JDK);
SslContext clientOptions = SslContextBuilder.forClient()
.trustManager(InsecureTrustManagerFactory.INSTANCE)
.sslProvider(SslProvider.JDK)
.build();

log.debug("Using SslContext: {}", clientOptions);

final TcpServer server =
TcpServer.create()
.host("localhost")
Expand Down

0 comments on commit 9a74a01

Please sign in to comment.