Beispiel #1
0
 private Connection createNextConnection()
 {
     Object obj = client.getConnectionPool();
     do
     {
         Connection connection1 = ((ConnectionPool) (obj)).get(address);
         if (connection1 == null)
         {
             break;
         }
         if (networkRequest.method().equals("GET") || Internal.instance.isReadable(connection1))
         {
             return connection1;
         }
         Util.closeQuietly(connection1.getSocket());
     } while (true);
     try
     {
         obj = new Connection(((ConnectionPool) (obj)), routeSelector.next());
     }
     catch (IOException ioexception)
     {
         throw new RouteException(ioexception);
     }
     return ((Connection) (obj));
 }
Beispiel #2
0
 /** Connect to the origin server either directly or via a proxy. */
 protected final void connect() throws IOException {
   if (connection != null) {
     return;
   }
   if (routeSelector == null) {
     String uriHost = uri.getHost();
     if (uriHost == null) {
       throw new UnknownHostException(uri.toString());
     }
     SSLSocketFactory sslSocketFactory = null;
     HostnameVerifier hostnameVerifier = null;
     if (uri.getScheme().equalsIgnoreCase("https")) {
       sslSocketFactory = client.getSslSocketFactory();
       hostnameVerifier = client.getHostnameVerifier();
     }
     Address address =
         new Address(
             uriHost,
             getEffectivePort(uri),
             sslSocketFactory,
             hostnameVerifier,
             client.getAuthenticator(),
             client.getProxy(),
             client.getTransports());
     routeSelector =
         new RouteSelector(
             address,
             uri,
             client.getProxySelector(),
             client.getConnectionPool(),
             Dns.DEFAULT,
             client.getRoutesDatabase());
   }
   connection = routeSelector.next(method);
   if (!connection.isConnected()) {
     connection.connect(client.getConnectTimeout(), client.getReadTimeout(), getTunnelConfig());
     client.getConnectionPool().maybeShare(connection);
     client.getRoutesDatabase().connected(connection.getRoute());
   } else if (!connection.isSpdy()) {
     connection.updateReadTimeout(client.getReadTimeout());
   }
   connected(connection);
   if (connection.getRoute().getProxy() != client.getProxy()) {
     // Update the request line if the proxy changed; it may need a host name.
     requestHeaders.getHeaders().setRequestLine(getRequestLine());
   }
 }