--- old/src/java.base/share/classes/java/net/HttpConnectSocketImpl.java 2019-04-18 10:58:14.000000000 +0100 +++ new/src/java.base/share/classes/java/net/HttpConnectSocketImpl.java 2019-04-18 10:58:14.000000000 +0100 @@ -52,6 +52,7 @@ private final String server; private InetSocketAddress external_address; + private final Socket socket; private HashMap optionsMap = new HashMap<>(); static { @@ -75,7 +76,7 @@ } } - HttpConnectSocketImpl(Proxy proxy, SocketImpl delegate) { + HttpConnectSocketImpl(Proxy proxy, SocketImpl delegate, Socket socket) { super(delegate); SocketAddress a = proxy.address(); if ( !(a instanceof InetSocketAddress) ) @@ -84,6 +85,7 @@ InetSocketAddress ad = (InetSocketAddress) a; server = ad.getHostString(); port = ad.getPort(); + this.socket = socket; } @Override @@ -97,17 +99,6 @@ } @Override - void setSocket(Socket socket) { - delegate.socket = socket; - super.setSocket(socket); - } - - @Override - void setServerSocket(ServerSocket socket) { - throw new InternalError("should not get here"); - } - - @Override protected void connect(SocketAddress endpoint, int timeout) throws IOException { @@ -137,7 +128,7 @@ // update the Sockets impl to the impl from the http Socket SocketImpl si = httpSocket.impl; - getSocket().setImpl(si); + socket.setImpl(si); // TODO REMOVE: Is this ok, or delegating? // best effort is made to try and reset options previously set Set> options = optionsMap.entrySet();