35 import javax.net.ssl.SSLSocket; |
35 import javax.net.ssl.SSLSocket; |
36 import java.io.BufferedOutputStream; |
36 import java.io.BufferedOutputStream; |
37 import java.io.IOException; |
37 import java.io.IOException; |
38 import java.io.InputStream; |
38 import java.io.InputStream; |
39 import java.io.OutputStream; |
39 import java.io.OutputStream; |
|
40 import java.net.InetAddress; |
40 import java.net.InetSocketAddress; |
41 import java.net.InetSocketAddress; |
41 import java.net.Socket; |
42 import java.net.Socket; |
42 import java.nio.ByteBuffer; |
43 import java.nio.ByteBuffer; |
43 import java.util.List; |
44 import java.util.List; |
44 import java.util.concurrent.BlockingQueue; |
45 import java.util.concurrent.BlockingQueue; |
84 ExecutorService exec, |
85 ExecutorService exec, |
85 CountDownLatch allBytesReceived) throws IOException { |
86 CountDownLatch allBytesReceived) throws IOException { |
86 SSLServerSocketFactory fac = ctx.getServerSocketFactory(); |
87 SSLServerSocketFactory fac = ctx.getServerSocketFactory(); |
87 SSLServerSocket serv = (SSLServerSocket) fac.createServerSocket(); |
88 SSLServerSocket serv = (SSLServerSocket) fac.createServerSocket(); |
88 serv.setReuseAddress(false); |
89 serv.setReuseAddress(false); |
89 serv.bind(new InetSocketAddress(0)); |
90 serv.bind(new InetSocketAddress(InetAddress.getLoopbackAddress(), 0)); |
90 SSLParameters params = serv.getSSLParameters(); |
91 SSLParameters params = serv.getSSLParameters(); |
91 params.setApplicationProtocols(new String[]{"proto2"}); |
92 params.setApplicationProtocols(new String[]{"proto2"}); |
92 serv.setSSLParameters(params); |
93 serv.setSSLParameters(params); |
93 |
94 |
94 |
95 |
95 int serverPort = serv.getLocalPort(); |
96 int serverPort = serv.getLocalPort(); |
96 clientSock = new Socket("127.0.0.1", serverPort); |
97 clientSock = new Socket("localhost", serverPort); |
97 serverSock = (SSLSocket) serv.accept(); |
98 serverSock = (SSLSocket) serv.accept(); |
98 this.buffer = new LinkedBlockingQueue<>(); |
99 this.buffer = new LinkedBlockingQueue<>(); |
99 this.allBytesReceived = allBytesReceived; |
100 this.allBytesReceived = allBytesReceived; |
100 thread1 = new Thread(this::clientWriter, "clientWriter"); |
101 thread1 = new Thread(this::clientWriter, "clientWriter"); |
101 thread2 = new Thread(this::serverLoopback, "serverLoopback"); |
102 thread2 = new Thread(this::serverLoopback, "serverLoopback"); |