Merge "Remove workaround for *.clients.google.com." into lmp-dev
diff --git a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/RouteSelectorTest.java b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/RouteSelectorTest.java
index ebfb282..c8e2647 100644
--- a/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/RouteSelectorTest.java
+++ b/okhttp-tests/src/test/java/com/squareup/okhttp/internal/http/RouteSelectorTest.java
@@ -18,10 +18,10 @@
import com.squareup.okhttp.Address;
import com.squareup.okhttp.Connection;
import com.squareup.okhttp.ConnectionPool;
+import com.squareup.okhttp.HostResolver;
import com.squareup.okhttp.OkAuthenticator;
import com.squareup.okhttp.Protocol;
import com.squareup.okhttp.RouteDatabase;
-import com.squareup.okhttp.internal.Dns;
import com.squareup.okhttp.internal.SslContextBuilder;
import java.io.IOException;
import java.net.InetAddress;
@@ -423,7 +423,7 @@
}
}
- private static class FakeDns implements Dns {
+ private static class FakeDns implements HostResolver {
List<String> requestedHosts = new ArrayList<String>();
InetAddress[] inetAddresses;
diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/Dns.java b/okhttp/src/main/java/com/squareup/okhttp/HostResolver.java
similarity index 90%
rename from okhttp/src/main/java/com/squareup/okhttp/internal/Dns.java
rename to okhttp/src/main/java/com/squareup/okhttp/HostResolver.java
index a89b293..c7a1edb 100644
--- a/okhttp/src/main/java/com/squareup/okhttp/internal/Dns.java
+++ b/okhttp/src/main/java/com/squareup/okhttp/HostResolver.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.squareup.okhttp.internal;
+package com.squareup.okhttp;
import java.net.InetAddress;
import java.net.UnknownHostException;
@@ -22,8 +22,8 @@
* Domain name service. Prefer this over {@link InetAddress#getAllByName} to
* make code more testable.
*/
-public interface Dns {
- Dns DEFAULT = new Dns() {
+public interface HostResolver {
+ HostResolver DEFAULT = new HostResolver() {
@Override public InetAddress[] getAllByName(String host) throws UnknownHostException {
if (host == null) throw new UnknownHostException("host == null");
return InetAddress.getAllByName(host);
diff --git a/okhttp/src/main/java/com/squareup/okhttp/OkHttpClient.java b/okhttp/src/main/java/com/squareup/okhttp/OkHttpClient.java
index 882c13d..0bb98c5 100644
--- a/okhttp/src/main/java/com/squareup/okhttp/OkHttpClient.java
+++ b/okhttp/src/main/java/com/squareup/okhttp/OkHttpClient.java
@@ -66,6 +66,7 @@
private HostnameVerifier hostnameVerifier;
private OkAuthenticator authenticator;
private ConnectionPool connectionPool;
+ private HostResolver hostResolver;
private boolean followProtocolRedirects = true;
private int connectTimeout;
private int readTimeout;
@@ -382,6 +383,19 @@
return protocols;
}
+ /*
+ * Sets the {@code HostResolver} that will be used by this client to resolve
+ * hostnames to IP addresses.
+ */
+ public OkHttpClient setHostResolver(HostResolver hostResolver) {
+ this.hostResolver = hostResolver;
+ return this;
+ }
+
+ public HostResolver getHostResolver() {
+ return hostResolver;
+ }
+
/**
* Invokes {@code request} immediately, and blocks until the response can be
* processed or is in error.
@@ -491,6 +505,9 @@
if (result.protocols == null) {
result.protocols = Protocol.HTTP2_SPDY3_AND_HTTP;
}
+ if (result.hostResolver == null) {
+ result.hostResolver = HostResolver.DEFAULT;
+ }
return result;
}
diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/http/HttpEngine.java b/okhttp/src/main/java/com/squareup/okhttp/internal/http/HttpEngine.java
index 554bc6e..38e26c3 100644
--- a/okhttp/src/main/java/com/squareup/okhttp/internal/http/HttpEngine.java
+++ b/okhttp/src/main/java/com/squareup/okhttp/internal/http/HttpEngine.java
@@ -20,6 +20,7 @@
import com.squareup.okhttp.Address;
import com.squareup.okhttp.Connection;
import com.squareup.okhttp.Headers;
+import com.squareup.okhttp.HostResolver;
import com.squareup.okhttp.OkHttpClient;
import com.squareup.okhttp.OkResponseCache;
import com.squareup.okhttp.Request;
@@ -27,7 +28,6 @@
import com.squareup.okhttp.ResponseSource;
import com.squareup.okhttp.Route;
import com.squareup.okhttp.TunnelRequest;
-import com.squareup.okhttp.internal.Dns;
import java.io.IOException;
import java.io.InputStream;
import java.net.CacheRequest;
@@ -240,7 +240,7 @@
client.getSocketFactory(), sslSocketFactory, hostnameVerifier, client.getAuthenticator(),
client.getProxy(), client.getProtocols());
routeSelector = new RouteSelector(address, request.uri(), client.getProxySelector(),
- client.getConnectionPool(), Dns.DEFAULT, client.getRoutesDatabase());
+ client.getConnectionPool(), client.getHostResolver(), client.getRoutesDatabase());
}
connection = routeSelector.next(request.method());
diff --git a/okhttp/src/main/java/com/squareup/okhttp/internal/http/RouteSelector.java b/okhttp/src/main/java/com/squareup/okhttp/internal/http/RouteSelector.java
index f935d5c..c634bab 100644
--- a/okhttp/src/main/java/com/squareup/okhttp/internal/http/RouteSelector.java
+++ b/okhttp/src/main/java/com/squareup/okhttp/internal/http/RouteSelector.java
@@ -18,9 +18,9 @@
import com.squareup.okhttp.Address;
import com.squareup.okhttp.Connection;
import com.squareup.okhttp.ConnectionPool;
+import com.squareup.okhttp.HostResolver;
import com.squareup.okhttp.Route;
import com.squareup.okhttp.RouteDatabase;
-import com.squareup.okhttp.internal.Dns;
import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
@@ -55,7 +55,7 @@
private final URI uri;
private final ProxySelector proxySelector;
private final ConnectionPool pool;
- private final Dns dns;
+ private final HostResolver hostResolver;
private final RouteDatabase routeDatabase;
/* The most recently attempted route. */
@@ -79,12 +79,12 @@
private final List<Route> postponedRoutes;
public RouteSelector(Address address, URI uri, ProxySelector proxySelector, ConnectionPool pool,
- Dns dns, RouteDatabase routeDatabase) {
+ HostResolver hostResolver, RouteDatabase routeDatabase) {
this.address = address;
this.uri = uri;
this.proxySelector = proxySelector;
this.pool = pool;
- this.dns = dns;
+ this.hostResolver = hostResolver;
this.routeDatabase = routeDatabase;
this.postponedRoutes = new LinkedList<Route>();
@@ -229,7 +229,7 @@
}
// Try each address for best behavior in mixed IPv4/IPv6 environments.
- socketAddresses = dns.getAllByName(socketHost);
+ socketAddresses = hostResolver.getAllByName(socketHost);
nextSocketAddressIndex = 0;
}