27 import java.io.File; |
27 import java.io.File; |
28 import java.io.FileInputStream; |
28 import java.io.FileInputStream; |
29 import java.io.IOException; |
29 import java.io.IOException; |
30 import java.io.InputStream; |
30 import java.io.InputStream; |
31 import java.io.OutputStream; |
31 import java.io.OutputStream; |
|
32 import java.net.InetAddress; |
32 import java.net.InetSocketAddress; |
33 import java.net.InetSocketAddress; |
33 import java.net.Socket; |
34 import java.net.Socket; |
34 import java.nio.ByteBuffer; |
35 import java.nio.ByteBuffer; |
35 import java.security.KeyManagementException; |
36 import java.security.KeyManagementException; |
36 import java.security.KeyStore; |
37 import java.security.KeyStore; |
197 ExecutorService exec, |
198 ExecutorService exec, |
198 CountDownLatch allBytesReceived) throws IOException { |
199 CountDownLatch allBytesReceived) throws IOException { |
199 SSLServerSocketFactory fac = ctx.getServerSocketFactory(); |
200 SSLServerSocketFactory fac = ctx.getServerSocketFactory(); |
200 SSLServerSocket serv = (SSLServerSocket) fac.createServerSocket(); |
201 SSLServerSocket serv = (SSLServerSocket) fac.createServerSocket(); |
201 serv.setReuseAddress(false); |
202 serv.setReuseAddress(false); |
202 serv.bind(new InetSocketAddress(0)); |
203 serv.bind(new InetSocketAddress(InetAddress.getLoopbackAddress(), 0)); |
203 SSLParameters params = serv.getSSLParameters(); |
204 SSLParameters params = serv.getSSLParameters(); |
204 params.setApplicationProtocols(new String[]{"proto2"}); |
205 params.setApplicationProtocols(new String[]{"proto2"}); |
205 serv.setSSLParameters(params); |
206 serv.setSSLParameters(params); |
206 |
207 |
207 |
208 |
208 int serverPort = serv.getLocalPort(); |
209 int serverPort = serv.getLocalPort(); |
209 clientSock = new Socket("127.0.0.1", serverPort); |
210 clientSock = new Socket("localhost", serverPort); |
210 serverSock = (SSLSocket) serv.accept(); |
211 serverSock = (SSLSocket) serv.accept(); |
211 this.buffer = new LinkedBlockingQueue<>(); |
212 this.buffer = new LinkedBlockingQueue<>(); |
212 this.allBytesReceived = allBytesReceived; |
213 this.allBytesReceived = allBytesReceived; |
213 thread1 = new Thread(this::clientWriter, "clientWriter"); |
214 thread1 = new Thread(this::clientWriter, "clientWriter"); |
214 thread2 = new Thread(this::serverLoopback, "serverLoopback"); |
215 thread2 = new Thread(this::serverLoopback, "serverLoopback"); |