tree 8d543425b53be6a3ea065c7fc92bdca448632656
parent 335d1d4d38ed77fd20bf2bd2a25e1293f994cc25
author Brian Carlstrom <bdc@google.com> 1271616140 -0700
committer Brian Carlstrom <bdc@google.com> 1271643047 -0700

b/2599994 Should call prepareSocket on underlying socket, not layered socket

DefaultClientConnectionOperator.openConnection was recently changed to
use LayeredSocketFactory.createSocket(Socket, ...) to create an
SSLSocket around a plain java.net.Socket. However, this means code in
LayeredSocketFactory.createSocket(Socket, ...) is called before socket
options such as timeout are set by
DefaultClientConnectionOperator.prepareSocket. However, the default
org.apache.http.conn.ssl.SSLSocketFactory.createSocket(Socket, ...)
performes the SSL handshake to perform hostname verification, meaning
the handshake is performed without timeouts set.

This change to DefaultClientConnectionOperator.openConnection moves
the call prepareSocket to be on the underlying java.net.Socket before
it is has the SSLSocket layered on top of it to prevent hangs during
SSL handshakes.

Change-Id: If705cc1acfe524281ec1338f73eccf7c0f4d1227
