Skip to content

Commit 4ba3fca

Browse files
committed
Fix #692 by initializing the zitiSslSocketFactory on first use instead of on bean construction
1 parent a325c0b commit 4ba3fca

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

ziti-springboot-client/src/main/java/org/openziti/springboot/client/web/config/ZitiTlsSocketStrategy.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,26 +37,28 @@
3737

3838
@Slf4j
3939
public class ZitiTlsSocketStrategy extends DefaultClientTlsStrategy {
40-
private final SSLSocketFactory zitiSslSocketFactory;
40+
private SSLSocketFactory zitiSslSocketFactory;
41+
42+
private final SSLContext sslContext;
4143
private final HostnameVerificationPolicy hostnameVerificationPolicy;
4244

4345
public ZitiTlsSocketStrategy(final SSLContext sslContext,
4446
final HostnameVerificationPolicy hostnameVerificationPolicy,
4547
final HostnameVerifier hostnameVerifier) {
4648
super(sslContext, hostnameVerificationPolicy, hostnameVerifier);
47-
this.zitiSslSocketFactory = Ziti.getSSLSocketFactory(sslContext);
49+
this.sslContext = sslContext;
4850
this.hostnameVerificationPolicy = hostnameVerificationPolicy;
4951
}
5052

5153
public ZitiTlsSocketStrategy(final SSLContext sslContext) {
5254
super(sslContext);
53-
this.zitiSslSocketFactory = Ziti.getSSLSocketFactory(sslContext);
55+
this.sslContext = sslContext;
5456
this.hostnameVerificationPolicy = HostnameVerificationPolicy.BOTH;
5557
}
5658

5759
@Override
5860
public SSLSocket upgrade(Socket socket, String target, int port, Object attachment, HttpContext context) throws IOException {
59-
final SSLSocket upgradedSocket = (SSLSocket) zitiSslSocketFactory.createSocket(socket, target, port, true);
61+
final SSLSocket upgradedSocket = (SSLSocket) getZitiSslSocketFactory().createSocket(socket, target, port, true);
6062
try {
6163
executeHandshake(upgradedSocket, target, attachment);
6264
return upgradedSocket;
@@ -97,4 +99,15 @@ private void executeHandshake(
9799
verifySession(target, upgradedSocket.getSession());
98100
}
99101

102+
protected SSLSocketFactory getZitiSslSocketFactory() {
103+
if (zitiSslSocketFactory == null) {
104+
synchronized(this) {
105+
if (zitiSslSocketFactory == null) {
106+
zitiSslSocketFactory = Ziti.getSSLSocketFactory(sslContext);
107+
}
108+
}
109+
}
110+
return zitiSslSocketFactory;
111+
}
112+
100113
}

0 commit comments

Comments
 (0)