Skip to content

Commit 0034d9c

Browse files
committed
Changes discussed.
1 parent 8fa5a78 commit 0034d9c

File tree

12 files changed

+41
-55
lines changed

12 files changed

+41
-55
lines changed

netty/src/main/java/io/grpc/netty/InternalProtocolNegotiators.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,9 @@ public static InternalProtocolNegotiator.ProtocolNegotiator tls(SslContext sslCo
4747
ObjectPool<? extends Executor> executorPool,
4848
Optional<Runnable> handshakeCompleteRunnable,
4949
TrustManager extendedX509TrustManager,
50-
String sni,
51-
boolean isXdsTarget) {
50+
String sni) {
5251
final io.grpc.netty.ProtocolNegotiator negotiator = ProtocolNegotiators.tls(sslContext,
53-
executorPool, handshakeCompleteRunnable, (X509TrustManager) extendedX509TrustManager, sni,
54-
isXdsTarget);
52+
executorPool, handshakeCompleteRunnable, (X509TrustManager) extendedX509TrustManager, sni);
5553
final class TlsNegotiator implements InternalProtocolNegotiator.ProtocolNegotiator {
5654

5755
@Override
@@ -79,9 +77,9 @@ public void close() {
7977
* may happen immediately, even before the TLS Handshake is complete.
8078
*/
8179
public static InternalProtocolNegotiator.ProtocolNegotiator tls(
82-
SslContext sslContext, String sni, boolean isXdsTarget,
80+
SslContext sslContext, String sni,
8381
TrustManager extendedX509TrustManager) {
84-
return tls(sslContext, null, Optional.absent(), extendedX509TrustManager, sni, isXdsTarget);
82+
return tls(sslContext, null, Optional.absent(), extendedX509TrustManager, sni);
8583
}
8684

8785
/**

netty/src/main/java/io/grpc/netty/NettyChannelBuilder.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -653,7 +653,7 @@ static ProtocolNegotiator createProtocolNegotiatorByType(
653653
return ProtocolNegotiators.plaintextUpgrade();
654654
case TLS:
655655
return ProtocolNegotiators.tls(
656-
sslContext, executorPool, Optional.absent(), null, null, false);
656+
sslContext, executorPool, Optional.absent(), null, null);
657657
default:
658658
throw new IllegalArgumentException("Unsupported negotiationType: " + negotiationType);
659659
}

netty/src/main/java/io/grpc/netty/ProtocolNegotiators.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -564,7 +564,7 @@ static final class ClientTlsProtocolNegotiator implements ProtocolNegotiator {
564564

565565
public ClientTlsProtocolNegotiator(SslContext sslContext,
566566
ObjectPool<? extends Executor> executorPool, Optional<Runnable> handshakeCompleteRunnable,
567-
X509TrustManager x509ExtendedTrustManager, String sni, boolean isXdsTarget) {
567+
X509TrustManager x509ExtendedTrustManager, String sni) {
568568
this.sslContext = Preconditions.checkNotNull(sslContext, "sslContext");
569569
this.executorPool = executorPool;
570570
if (this.executorPool != null) {
@@ -573,18 +573,13 @@ public ClientTlsProtocolNegotiator(SslContext sslContext,
573573
this.handshakeCompleteRunnable = handshakeCompleteRunnable;
574574
this.x509ExtendedTrustManager = x509ExtendedTrustManager;
575575
this.sni = sni;
576-
this.isXdsTarget = isXdsTarget;
577576
}
578577

579578
private final SslContext sslContext;
580579
private final ObjectPool<? extends Executor> executorPool;
581580
private final Optional<Runnable> handshakeCompleteRunnable;
582581
private final X509TrustManager x509ExtendedTrustManager;
583582
private final String sni;
584-
// For xds targets there may be no SNI determined, and no SNI may be sent in that case.
585-
// Non xds-targets will always use channel authority for SNI. This field is used to handle
586-
// the two cases differently.
587-
private final boolean isXdsTarget;
588583
private Executor executor;
589584

590585
@Override
@@ -597,7 +592,7 @@ public ChannelHandler newHandler(GrpcHttp2ConnectionHandler grpcHandler) {
597592
ChannelHandler gnh = new GrpcNegotiationHandler(grpcHandler);
598593
ChannelLogger negotiationLogger = grpcHandler.getNegotiationLogger();
599594
ChannelHandler cth = new ClientTlsHandler(gnh, sslContext,
600-
isXdsTarget ? sni : grpcHandler.getAuthority(),
595+
sni != null? sni : grpcHandler.getAuthority(),
601596
this.executor, negotiationLogger, handshakeCompleteRunnable, null,
602597
x509ExtendedTrustManager);
603598
return new WaitUntilActiveHandler(cth, negotiationLogger);
@@ -753,9 +748,9 @@ static HostPort parseAuthority(String authority) {
753748
*/
754749
public static ProtocolNegotiator tls(SslContext sslContext,
755750
ObjectPool<? extends Executor> executorPool, Optional<Runnable> handshakeCompleteRunnable,
756-
X509TrustManager x509ExtendedTrustManager, String sni, boolean isXdsTarget) {
751+
X509TrustManager x509ExtendedTrustManager, String sni) {
757752
return new ClientTlsProtocolNegotiator(sslContext, executorPool, handshakeCompleteRunnable,
758-
x509ExtendedTrustManager, sni, isXdsTarget);
753+
x509ExtendedTrustManager, sni);
759754
}
760755

761756
/**

netty/src/test/java/io/grpc/netty/NettyClientTransportTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -877,7 +877,7 @@ public void tlsNegotiationServerExecutorShouldSucceed() throws Exception {
877877
.keyManager(clientCert, clientKey)
878878
.build();
879879
ProtocolNegotiator negotiator = ProtocolNegotiators.tls(clientContext, clientExecutorPool,
880-
Optional.absent(), null, null, false);
880+
Optional.absent(), null, null);
881881
// after starting the client, the Executor in the client pool should be used
882882
assertEquals(true, clientExecutorPool.isInUse());
883883
final NettyClientTransport transport = newTransport(negotiator);

netty/src/test/java/io/grpc/netty/ProtocolNegotiatorsTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1271,7 +1271,7 @@ public void clientTlsHandler_firesNegotiation() throws Exception {
12711271
}
12721272
FakeGrpcHttp2ConnectionHandler gh = FakeGrpcHttp2ConnectionHandler.newHandler();
12731273
ClientTlsProtocolNegotiator pn = new ClientTlsProtocolNegotiator(clientSslContext,
1274-
null, Optional.absent(), null, null, false);
1274+
null, Optional.absent(), null, null);
12751275
WriteBufferingAndExceptionHandler clientWbaeh =
12761276
new WriteBufferingAndExceptionHandler(pn.newHandler(gh));
12771277

xds/src/main/java/io/grpc/xds/TlsContextManager.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ SslContextProvider findOrCreateServerSslContextProvider(
3030

3131
/** Creates a SslContextProvider. Used for retrieving a client-side SslContext. */
3232
SslContextProvider findOrCreateClientSslContextProvider(
33-
UpstreamTlsContext upstreamTlsContext, String sni);
33+
UpstreamTlsContext upstreamTlsContext);
3434

3535
/**
3636
* Releases an instance of the given client-side {@link SslContextProvider}.
@@ -41,8 +41,7 @@ SslContextProvider findOrCreateClientSslContextProvider(
4141
* <p>Caller must not release a reference more than once. It's advised that you clear the
4242
* reference to the instance with the null returned by this method.
4343
*/
44-
SslContextProvider releaseClientSslContextProvider(SslContextProvider sslContextProvider,
45-
String sni);
44+
SslContextProvider releaseClientSslContextProvider(SslContextProvider sslContextProvider);
4645

4746
/**
4847
* Releases an instance of the given server-side {@link SslContextProvider}.

xds/src/main/java/io/grpc/xds/internal/security/SecurityProtocolNegotiators.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ public void updateSslContextAndExtendedX509TrustManager(
247247
new Object[]{grpcHandler.getAuthority(), ctx.name()});
248248
ChannelHandler handler =
249249
InternalProtocolNegotiators.tls(
250-
sslContextAndTm.getKey(), sni, true, sslContextAndTm.getValue())
250+
sslContextAndTm.getKey(), sni, sslContextAndTm.getValue())
251251
.newHandler(grpcHandler);
252252

253253
// Delegate rest of handshake to TLS handler
@@ -260,8 +260,7 @@ public void updateSslContextAndExtendedX509TrustManager(
260260
public void onException(Throwable throwable) {
261261
ctx.fireExceptionCaught(throwable);
262262
}
263-
},
264-
sni);
263+
});
265264
}
266265

267266
@Override

xds/src/main/java/io/grpc/xds/internal/security/SslContextProviderSupplier.java

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@ public final class SslContextProviderSupplier implements Closeable {
4242

4343
private final BaseTlsContext tlsContext;
4444
private final TlsContextManager tlsContextManager;
45-
private final Set<String> snisSentByClients = new HashSet<>();
4645
private SslContextProvider sslContextProvider;
4746
private boolean shutdown;
4847

@@ -58,30 +57,30 @@ public BaseTlsContext getTlsContext() {
5857

5958
/** Updates SslContext via the passed callback. */
6059
public synchronized void updateSslContext(
61-
final SslContextProvider.Callback callback, String sni) {
60+
final SslContextProvider.Callback callback) {
6261
checkNotNull(callback, "callback");
6362
try {
6463
if (!shutdown) {
6564
if (sslContextProvider == null) {
66-
sslContextProvider = getSslContextProvider(sni);
65+
sslContextProvider = getSslContextProvider();
6766
}
6867
}
6968
// we want to increment the ref-count so call findOrCreate again...
70-
final SslContextProvider toRelease = getSslContextProvider(sni);
69+
final SslContextProvider toRelease = getSslContextProvider();
7170
toRelease.addCallback(
7271
new SslContextProvider.Callback(callback.getExecutor()) {
7372

7473
@Override
7574
public void updateSslContextAndExtendedX509TrustManager(
7675
AbstractMap.SimpleImmutableEntry<SslContext, TrustManager> sslContextAndTm) {
7776
callback.updateSslContextAndExtendedX509TrustManager(sslContextAndTm);
78-
releaseSslContextProvider(toRelease, sni);
77+
releaseSslContextProvider(toRelease);
7978
}
8079

8180
@Override
8281
public void onException(Throwable throwable) {
8382
callback.onException(throwable);
84-
releaseSslContextProvider(toRelease, sni);
83+
releaseSslContextProvider(toRelease);
8584
}
8685
});
8786
} catch (final Throwable throwable) {
@@ -94,20 +93,18 @@ public void run() {
9493
}
9594
}
9695

97-
private void releaseSslContextProvider(SslContextProvider toRelease, String sni) {
96+
private void releaseSslContextProvider(SslContextProvider toRelease) {
9897
if (tlsContext instanceof UpstreamTlsContext) {
99-
tlsContextManager.releaseClientSslContextProvider(toRelease, sni);
100-
snisSentByClients.remove(sni);
98+
tlsContextManager.releaseClientSslContextProvider(toRelease);
10199
} else {
102100
tlsContextManager.releaseServerSslContextProvider(toRelease);
103101
}
104102
}
105103

106-
private SslContextProvider getSslContextProvider(String sni) {
104+
private SslContextProvider getSslContextProvider() {
107105
if (tlsContext instanceof UpstreamTlsContext) {
108-
snisSentByClients.add(sni);
109106
return tlsContextManager.findOrCreateClientSslContextProvider(
110-
(UpstreamTlsContext) tlsContext, sni);
107+
(UpstreamTlsContext) tlsContext);
111108
}
112109
return tlsContextManager.findOrCreateServerSslContextProvider(
113110
(DownstreamTlsContext) tlsContext);
@@ -122,9 +119,7 @@ private SslContextProvider getSslContextProvider(String sni) {
122119
public synchronized void close() {
123120
if (sslContextProvider != null) {
124121
if (tlsContext instanceof UpstreamTlsContext) {
125-
for (String sni: snisSentByClients) {
126-
tlsContextManager.releaseClientSslContextProvider(sslContextProvider, sni);
127-
}
122+
tlsContextManager.releaseClientSslContextProvider(sslContextProvider);
128123
} else {
129124
tlsContextManager.releaseServerSslContextProvider(sslContextProvider);
130125
}

xds/src/main/java/io/grpc/xds/internal/security/TlsContextManagerImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public SslContextProvider findOrCreateServerSslContextProvider(
7272

7373
@Override
7474
public SslContextProvider findOrCreateClientSslContextProvider(
75-
UpstreamTlsContext upstreamTlsContext, String sni) {
75+
UpstreamTlsContext upstreamTlsContext) {
7676
checkNotNull(upstreamTlsContext, "upstreamTlsContext");
7777
return mapForClients.get(new AbstractMap.SimpleImmutableEntry<>(upstreamTlsContext, sni));
7878
}

xds/src/test/java/io/grpc/xds/ClusterImplLoadBalancerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1259,7 +1259,7 @@ public Map<ServerInfo, LoadReportClient> getServerLrsClientMap() {
12591259
private static final class FakeTlsContextManager implements TlsContextManager {
12601260
@Override
12611261
public SslContextProvider findOrCreateClientSslContextProvider(
1262-
UpstreamTlsContext upstreamTlsContext, String sni) {
1262+
UpstreamTlsContext upstreamTlsContext) {
12631263
SslContextProvider sslContextProvider = mock(SslContextProvider.class);
12641264
when(sslContextProvider.getUpstreamTlsContext()).thenReturn(upstreamTlsContext);
12651265
return sslContextProvider;

0 commit comments

Comments
 (0)