mirror of https://github.com/grpc/grpc-java.git
Merge pull request #579 from zsurocking/master
Use hostname instead of InetAddress for Socket creation.
This commit is contained in:
commit
af70397d88
|
|
@ -43,7 +43,6 @@ import io.grpc.SharedResourceHolder;
|
|||
import io.grpc.SharedResourceHolder.Resource;
|
||||
import io.grpc.transport.ClientTransportFactory;
|
||||
|
||||
import java.net.InetSocketAddress;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
|
|
@ -84,18 +83,20 @@ public final class OkHttpChannelBuilder extends AbstractChannelBuilder<OkHttpCha
|
|||
|
||||
/** Creates a new builder for the given server host and port. */
|
||||
public static OkHttpChannelBuilder forAddress(String host, int port) {
|
||||
return new OkHttpChannelBuilder(new InetSocketAddress(host, port), host);
|
||||
return new OkHttpChannelBuilder(host, port);
|
||||
}
|
||||
|
||||
private final InetSocketAddress serverAddress;
|
||||
private ExecutorService transportExecutor;
|
||||
private String host;
|
||||
private final String host;
|
||||
private final int port;
|
||||
private String authorityHost;
|
||||
private SSLSocketFactory sslSocketFactory;
|
||||
private ConnectionSpec connectionSpec = DEFAULT_CONNECTION_SPEC;
|
||||
|
||||
private OkHttpChannelBuilder(InetSocketAddress serverAddress, String host) {
|
||||
this.serverAddress = Preconditions.checkNotNull(serverAddress, "serverAddress");
|
||||
this.host = host;
|
||||
private OkHttpChannelBuilder(String host, int port) {
|
||||
this.host = Preconditions.checkNotNull(host);
|
||||
this.port = port;
|
||||
this.authorityHost = host;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -116,7 +117,7 @@ public final class OkHttpChannelBuilder extends AbstractChannelBuilder<OkHttpCha
|
|||
* <p>Should only used by tests.
|
||||
*/
|
||||
public OkHttpChannelBuilder overrideHostForAuthority(String host) {
|
||||
this.host = host;
|
||||
this.authorityHost = host;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
|
@ -144,7 +145,7 @@ public final class OkHttpChannelBuilder extends AbstractChannelBuilder<OkHttpCha
|
|||
final ExecutorService executor = (transportExecutor == null)
|
||||
? SharedResourceHolder.get(DEFAULT_TRANSPORT_THREAD_POOL) : transportExecutor;
|
||||
ClientTransportFactory transportFactory = new OkHttpClientTransportFactory(
|
||||
serverAddress, host, executor, sslSocketFactory, connectionSpec);
|
||||
host, port, authorityHost, executor, sslSocketFactory, connectionSpec);
|
||||
Runnable terminationRunnable = null;
|
||||
// We shut down the executor only if we created it.
|
||||
if (transportExecutor == null) {
|
||||
|
|
|
|||
|
|
@ -67,7 +67,6 @@ import okio.ByteString;
|
|||
import okio.Okio;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.Socket;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
|
|
@ -128,7 +127,8 @@ class OkHttpClientTransport implements ClientTransport {
|
|||
ERROR_CODE_TO_STATUS = Collections.unmodifiableMap(errorToStatus);
|
||||
}
|
||||
|
||||
private final InetSocketAddress address;
|
||||
private final String host;
|
||||
private final int port;
|
||||
private final String authorityHost;
|
||||
private final String defaultAuthority;
|
||||
private final Random random = new Random();
|
||||
|
|
@ -162,11 +162,12 @@ class OkHttpClientTransport implements ClientTransport {
|
|||
private LinkedList<PendingStream> pendingStreams = new LinkedList<PendingStream>();
|
||||
private final ConnectionSpec connectionSpec;
|
||||
|
||||
OkHttpClientTransport(InetSocketAddress address, String authorityHost, Executor executor,
|
||||
OkHttpClientTransport(String host, int port, String authorityHost, Executor executor,
|
||||
@Nullable SSLSocketFactory sslSocketFactory, ConnectionSpec connectionSpec) {
|
||||
this.address = Preconditions.checkNotNull(address);
|
||||
this.host = Preconditions.checkNotNull(host);
|
||||
this.port = port;
|
||||
this.authorityHost = authorityHost;
|
||||
defaultAuthority = authorityHost + ":" + address.getPort();
|
||||
defaultAuthority = authorityHost + ":" + port;
|
||||
this.executor = Preconditions.checkNotNull(executor);
|
||||
// Client initiated streams are odd, server initiated ones are even. Server should not need to
|
||||
// use it. We start clients at 3 to avoid conflicting with HTTP negotiation.
|
||||
|
|
@ -191,7 +192,8 @@ class OkHttpClientTransport implements ClientTransport {
|
|||
@VisibleForTesting
|
||||
OkHttpClientTransport(Executor executor, FrameReader frameReader, AsyncFrameWriter frameWriter,
|
||||
int nextStreamId, Socket socket, Ticker ticker) {
|
||||
address = null;
|
||||
host = null;
|
||||
port = 0;
|
||||
authorityHost = null;
|
||||
defaultAuthority = "notarealauthority:80";
|
||||
this.executor = Preconditions.checkNotNull(executor);
|
||||
|
|
@ -318,18 +320,14 @@ class OkHttpClientTransport implements ClientTransport {
|
|||
public void start(Listener listener) {
|
||||
this.listener = Preconditions.checkNotNull(listener, "listener");
|
||||
// We set host to null for test.
|
||||
if (address != null) {
|
||||
if (host != null) {
|
||||
BufferedSource source;
|
||||
BufferedSink sink;
|
||||
try {
|
||||
if (address.isUnresolved()) {
|
||||
socket = new Socket(address.getHostName(), address.getPort());
|
||||
} else {
|
||||
socket = new Socket(address.getAddress(), address.getPort());
|
||||
}
|
||||
socket = new Socket(host, port);
|
||||
if (sslSocketFactory != null) {
|
||||
socket = OkHttpTlsUpgrader.upgrade(
|
||||
sslSocketFactory, socket, authorityHost, address.getPort(), connectionSpec);
|
||||
sslSocketFactory, socket, authorityHost, port, connectionSpec);
|
||||
}
|
||||
socket.setTcpNoDelay(true);
|
||||
source = Okio.buffer(Okio.source(socket));
|
||||
|
|
|
|||
|
|
@ -38,7 +38,6 @@ import com.squareup.okhttp.ConnectionSpec;
|
|||
import io.grpc.transport.ClientTransport;
|
||||
import io.grpc.transport.ClientTransportFactory;
|
||||
|
||||
import java.net.InetSocketAddress;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
import javax.net.ssl.SSLSocketFactory;
|
||||
|
|
@ -47,15 +46,17 @@ import javax.net.ssl.SSLSocketFactory;
|
|||
* Factory that manufactures instances of {@link OkHttpClientTransport}.
|
||||
*/
|
||||
class OkHttpClientTransportFactory implements ClientTransportFactory {
|
||||
private final InetSocketAddress address;
|
||||
private final String host;
|
||||
private final int port;
|
||||
private final ExecutorService executor;
|
||||
private final String authorityHost;
|
||||
private final SSLSocketFactory sslSocketFactory;
|
||||
private final ConnectionSpec connectionSpec;
|
||||
|
||||
public OkHttpClientTransportFactory(InetSocketAddress address, String authorityHost,
|
||||
public OkHttpClientTransportFactory(String host, int port, String authorityHost,
|
||||
ExecutorService executor, SSLSocketFactory factory, ConnectionSpec connectionSpec) {
|
||||
this.address = Preconditions.checkNotNull(address, "address");
|
||||
this.host = Preconditions.checkNotNull(host, "host");
|
||||
this.port = port;
|
||||
this.executor = Preconditions.checkNotNull(executor, "executor");
|
||||
this.authorityHost = Preconditions.checkNotNull(authorityHost, "authorityHost");
|
||||
this.sslSocketFactory = factory;
|
||||
|
|
@ -65,7 +66,7 @@ class OkHttpClientTransportFactory implements ClientTransportFactory {
|
|||
@Override
|
||||
public ClientTransport newClientTransport() {
|
||||
return new OkHttpClientTransport(
|
||||
address, authorityHost, executor, sslSocketFactory, connectionSpec);
|
||||
host, port, authorityHost, executor, sslSocketFactory, connectionSpec);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue