public final class okhttp.internal.connection.RealConnection extends okhttp.internal.http.Http2Connection$Listener implements okhttp.Connection
{
private static final java.lang.String NPE_THROW_WITH_NULL;
private static final int MAX_TUNNEL_ATTEMPTS;
private final okhttp.ConnectionPool connectionPool;
private final okhttp.Route route;
private java.net.Socket rawSocket;
private java.net.Socket socket;
private okhttp.Handshake handshake;
private okhttp.Protocol protocol;
private okhttp.internal.http.Http2Connection http2Connection;
private okio.BufferedSource source;
private okio.BufferedSink sink;
public boolean noNewStreams;
public int successCount;
public int allocationLimit;
public final java.util.List allocations;
public long idleAtNanos;
public void <init>(okhttp.ConnectionPool, okhttp.Route)
{
okhttp.Route v;
okhttp.ConnectionPool v;
okhttp.internal.connection.RealConnection v;
java.util.ArrayList v;
v := @this: okhttp.internal.connection.RealConnection;
v := @parameter: okhttp.ConnectionPool;
v := @parameter: okhttp.Route;
specialinvoke v.<okhttp.internal.http.Http2Connection$Listener: void <init>()>();
v.<okhttp.internal.connection.RealConnection: int allocationLimit> = 1;
v = new java.util.ArrayList;
specialinvoke v.<java.util.ArrayList: void <init>()>();
v.<okhttp.internal.connection.RealConnection: java.util.List allocations> = v;
v.<okhttp.internal.connection.RealConnection: long idleAtNanos> = 9223372036854775807L;
v.<okhttp.internal.connection.RealConnection: okhttp.ConnectionPool connectionPool> = v;
v.<okhttp.internal.connection.RealConnection: okhttp.Route route> = v;
return;
}
public static okhttp.internal.connection.RealConnection testConnection(okhttp.ConnectionPool, okhttp.Route, java.net.Socket, long)
{
okhttp.Route v;
java.net.Socket v;
okhttp.ConnectionPool v;
long v;
okhttp.internal.connection.RealConnection v;
v := @parameter: okhttp.ConnectionPool;
v := @parameter: okhttp.Route;
v := @parameter: java.net.Socket;
v := @parameter: long;
v = new okhttp.internal.connection.RealConnection;
specialinvoke v.<okhttp.internal.connection.RealConnection: void <init>(okhttp.ConnectionPool,okhttp.Route)>(v, v);
v.<okhttp.internal.connection.RealConnection: java.net.Socket socket> = v;
v.<okhttp.internal.connection.RealConnection: long idleAtNanos> = v;
return v;
}
public void connect(int, int, int, int, boolean, okhttp.Call, okhttp.EventListener)
{
okhttp.Address v, v, v, v;
okhttp.Route v, v, v, v, v, v, v, v, v, v;
java.net.Proxy v, v;
javax.net.ssl.SSLSocketFactory v;
java.net.UnknownServiceException v, v, v;
java.lang.Throwable v;
okhttp.EventListener v;
okhttp.Call v;
java.lang.String v, v;
java.io.IOException v;
java.net.ProtocolException v;
okhttp.internal.connection.RouteException v, v, v, v, v, v;
okhttp.ConnectionPool v;
okhttp.internal.connection.ConnectionSpecSelector v;
java.lang.IllegalStateException v;
okhttp.ConnectionSpec v;
boolean v, v, v, v, v, v, v;
okhttp.internal.http.Http2Connection v, v;
java.net.InetSocketAddress v, v;
java.util.List v, v;
okhttp.Protocol v, v, v;
okhttp.HttpUrl v;
okhttp.internal.connection.RealConnection v;
okhttp.internal.platform.Platform v;
java.net.Socket v, v, v, v;
int v, v, v, v, v;
v := @this: okhttp.internal.connection.RealConnection;
v := @parameter: int;
v := @parameter: int;
v := @parameter: int;
v := @parameter: int;
v := @parameter: boolean;
v := @parameter: okhttp.Call;
v := @parameter: okhttp.EventListener;
v = v.<okhttp.internal.connection.RealConnection: okhttp.Protocol protocol>;
if v == null goto label;
v = new java.lang.IllegalStateException;
specialinvoke v.<java.lang.IllegalStateException: void <init>(java.lang.String)>("already connected");
throw v;
label:
v = null;
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: okhttp.Address address()>();
v = virtualinvoke v.<okhttp.Address: java.util.List connectionSpecs()>();
v = new okhttp.internal.connection.ConnectionSpecSelector;
specialinvoke v.<okhttp.internal.connection.ConnectionSpecSelector: void <init>(java.util.List)>(v);
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: okhttp.Address address()>();
v = virtualinvoke v.<okhttp.Address: javax.net.ssl.SSLSocketFactory sslSocketFactory()>();
if v != null goto label;
v = <okhttp.ConnectionSpec: okhttp.ConnectionSpec CLEARTEXT>;
v = interfaceinvoke v.<java.util.List: boolean contains(java.lang.Object)>(v);
if v != 0 goto label;
v = new okhttp.internal.connection.RouteException;
v = new java.net.UnknownServiceException;
specialinvoke v.<java.net.UnknownServiceException: void <init>(java.lang.String)>("CLEARTEXT communication not enabled for client");
specialinvoke v.<okhttp.internal.connection.RouteException: void <init>(java.io.IOException)>(v);
throw v;
label:
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: okhttp.Address address()>();
v = virtualinvoke v.<okhttp.Address: okhttp.HttpUrl url()>();
v = virtualinvoke v.<okhttp.HttpUrl: java.lang.String host()>();
v = staticinvoke <okhttp.internal.platform.Platform: okhttp.internal.platform.Platform get()>();
v = virtualinvoke v.<okhttp.internal.platform.Platform: boolean isCleartextTrafficPermitted(java.lang.String)>(v);
if v != 0 goto label;
v = new okhttp.internal.connection.RouteException;
v = new java.net.UnknownServiceException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("CLEARTEXT communication to \u not permitted by network security policy");
specialinvoke v.<java.net.UnknownServiceException: void <init>(java.lang.String)>(v);
specialinvoke v.<okhttp.internal.connection.RouteException: void <init>(java.io.IOException)>(v);
throw v;
label:
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: okhttp.Address address()>();
v = virtualinvoke v.<okhttp.Address: java.util.List protocols()>();
v = <okhttp.Protocol: okhttp.Protocol H2_PRIOR_KNOWLEDGE>;
v = interfaceinvoke v.<java.util.List: boolean contains(java.lang.Object)>(v);
if v == 0 goto label;
v = new okhttp.internal.connection.RouteException;
v = new java.net.UnknownServiceException;
specialinvoke v.<java.net.UnknownServiceException: void <init>(java.lang.String)>("H2_PRIOR_KNOWLEDGE cannot be used with HTTPS");
specialinvoke v.<okhttp.internal.connection.RouteException: void <init>(java.io.IOException)>(v);
throw v;
label:
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: boolean requiresTunnel()>();
if v == 0 goto label;
specialinvoke v.<okhttp.internal.connection.RealConnection: void connectTunnel(int,int,int,okhttp.Call,okhttp.EventListener)>(v, v, v, v, v);
v = v.<okhttp.internal.connection.RealConnection: java.net.Socket rawSocket>;
if v != null goto label;
label:
goto label;
label:
specialinvoke v.<okhttp.internal.connection.RealConnection: void connectSocket(int,int,okhttp.Call,okhttp.EventListener)>(v, v, v, v);
label:
specialinvoke v.<okhttp.internal.connection.RealConnection: void establishProtocol(okhttp.internal.connection.ConnectionSpecSelector,int,okhttp.Call,okhttp.EventListener)>(v, v, v, v);
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: java.net.InetSocketAddress socketAddress()>();
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: java.net.Proxy proxy()>();
v = v.<okhttp.internal.connection.RealConnection: okhttp.Protocol protocol>;
virtualinvoke v.<okhttp.EventListener: void connectEnd(okhttp.Call,java.net.InetSocketAddress,java.net.Proxy,okhttp.Protocol)>(v, v, v, v);
label:
goto label;
label:
v := @caughtexception;
v = v.<okhttp.internal.connection.RealConnection: java.net.Socket socket>;
staticinvoke <okhttp.internal.Util: void closeQuietly(java.net.Socket)>(v);
v = v.<okhttp.internal.connection.RealConnection: java.net.Socket rawSocket>;
staticinvoke <okhttp.internal.Util: void closeQuietly(java.net.Socket)>(v);
v.<okhttp.internal.connection.RealConnection: java.net.Socket socket> = null;
v.<okhttp.internal.connection.RealConnection: java.net.Socket rawSocket> = null;
v.<okhttp.internal.connection.RealConnection: okio.BufferedSource source> = null;
v.<okhttp.internal.connection.RealConnection: okio.BufferedSink sink> = null;
v.<okhttp.internal.connection.RealConnection: okhttp.Handshake handshake> = null;
v.<okhttp.internal.connection.RealConnection: okhttp.Protocol protocol> = null;
v.<okhttp.internal.connection.RealConnection: okhttp.internal.http.Http2Connection http2Connection> = null;
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: java.net.InetSocketAddress socketAddress()>();
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: java.net.Proxy proxy()>();
virtualinvoke v.<okhttp.EventListener: void connectFailed(okhttp.Call,java.net.InetSocketAddress,java.net.Proxy,okhttp.Protocol,java.io.IOException)>(v, v, v, null, v);
if v != null goto label;
v = new okhttp.internal.connection.RouteException;
specialinvoke v.<okhttp.internal.connection.RouteException: void <init>(java.io.IOException)>(v);
v = v;
goto label;
label:
virtualinvoke v.<okhttp.internal.connection.RouteException: void addConnectException(java.io.IOException)>(v);
label:
if v == 0 goto label;
v = virtualinvoke v.<okhttp.internal.connection.ConnectionSpecSelector: boolean connectionFailed(java.io.IOException)>(v);
if v != 0 goto label;
label:
throw v;
label:
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: boolean requiresTunnel()>();
if v == 0 goto label;
v = v.<okhttp.internal.connection.RealConnection: java.net.Socket rawSocket>;
if v != null goto label;
v = new java.net.ProtocolException;
specialinvoke v.<java.net.ProtocolException: void <init>(java.lang.String)>("Too many tunnel connections attempted: 21");
v = new okhttp.internal.connection.RouteException;
specialinvoke v.<okhttp.internal.connection.RouteException: void <init>(java.io.IOException)>(v);
throw v;
label:
v = v.<okhttp.internal.connection.RealConnection: okhttp.internal.http.Http2Connection http2Connection>;
if v == null goto label;
v = v.<okhttp.internal.connection.RealConnection: okhttp.ConnectionPool connectionPool>;
entermonitor v;
label:
v = v.<okhttp.internal.connection.RealConnection: okhttp.internal.http.Http2Connection http2Connection>;
v = virtualinvoke v.<okhttp.internal.http.Http2Connection: int maxConcurrentStreams()>();
v.<okhttp.internal.connection.RealConnection: int allocationLimit> = v;
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return;
catch java.io.IOException from label to label with label;
catch java.io.IOException from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private void connectTunnel(int, int, int, okhttp.Call, okhttp.EventListener) throws java.io.IOException
{
java.net.Socket v;
okhttp.Request v;
java.net.InetSocketAddress v;
okhttp.Route v, v;
java.net.Proxy v;
okhttp.EventListener v;
int v, v, v, v;
okhttp.Call v;
okhttp.HttpUrl v;
okhttp.internal.connection.RealConnection v;
v := @this: okhttp.internal.connection.RealConnection;
v := @parameter: int;
v := @parameter: int;
v := @parameter: int;
v := @parameter: okhttp.Call;
v := @parameter: okhttp.EventListener;
v = specialinvoke v.<okhttp.internal.connection.RealConnection: okhttp.Request createTunnelRequest()>();
v = virtualinvoke v.<okhttp.Request: okhttp.HttpUrl url()>();
v = 0;
label:
if v >= 21 goto label;
specialinvoke v.<okhttp.internal.connection.RealConnection: void connectSocket(int,int,okhttp.Call,okhttp.EventListener)>(v, v, v, v);
v = specialinvoke v.<okhttp.internal.connection.RealConnection: okhttp.Request createTunnel(int,int,okhttp.Request,okhttp.HttpUrl)>(v, v, v, v);
if v == null goto label;
v = v.<okhttp.internal.connection.RealConnection: java.net.Socket rawSocket>;
staticinvoke <okhttp.internal.Util: void closeQuietly(java.net.Socket)>(v);
v.<okhttp.internal.connection.RealConnection: java.net.Socket rawSocket> = null;
v.<okhttp.internal.connection.RealConnection: okio.BufferedSink sink> = null;
v.<okhttp.internal.connection.RealConnection: okio.BufferedSource source> = null;
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: java.net.InetSocketAddress socketAddress()>();
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: java.net.Proxy proxy()>();
virtualinvoke v.<okhttp.EventListener: void connectEnd(okhttp.Call,java.net.InetSocketAddress,java.net.Proxy,okhttp.Protocol)>(v, v, v, null);
v = v + 1;
goto label;
label:
return;
}
private void connectSocket(int, int, okhttp.Call, okhttp.EventListener) throws java.io.IOException
{
java.lang.NullPointerException v;
okhttp.Address v;
okhttp.Route v, v, v, v, v;
java.net.Proxy v;
okio.BufferedSink v;
boolean v;
java.net.InetSocketAddress v, v, v;
javax.net.SocketFactory v;
okio.BufferedSource v;
okhttp.internal.connection.RealConnection v;
okhttp.internal.platform.Platform v;
java.net.Socket v, v, v, v, v;
okio.Source v;
okio.Sink v;
java.net.Proxy$Type v, v, v, v;
okhttp.EventListener v;
int v, v;
java.net.ConnectException v, v;
okhttp.Call v;
java.lang.String v, v, v;
java.io.IOException v;
v := @this: okhttp.internal.connection.RealConnection;
v := @parameter: int;
v := @parameter: int;
v := @parameter: okhttp.Call;
v := @parameter: okhttp.EventListener;
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: java.net.Proxy proxy()>();
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: okhttp.Address address()>();
v = virtualinvoke v.<java.net.Proxy: java.net.Proxy$Type type()>();
v = <java.net.Proxy$Type: java.net.Proxy$Type DIRECT>;
if v == v goto label;
v = virtualinvoke v.<java.net.Proxy: java.net.Proxy$Type type()>();
v = <java.net.Proxy$Type: java.net.Proxy$Type HTTP>;
if v != v goto label;
label:
v = virtualinvoke v.<okhttp.Address: javax.net.SocketFactory socketFactory()>();
v = virtualinvoke v.<javax.net.SocketFactory: java.net.Socket createSocket()>();
goto label;
label:
v = new java.net.Socket;
specialinvoke v.<java.net.Socket: void <init>(java.net.Proxy)>(v);
label:
v.<okhttp.internal.connection.RealConnection: java.net.Socket rawSocket> = v;
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: java.net.InetSocketAddress socketAddress()>();
virtualinvoke v.<okhttp.EventListener: void connectStart(okhttp.Call,java.net.InetSocketAddress,java.net.Proxy)>(v, v, v);
v = v.<okhttp.internal.connection.RealConnection: java.net.Socket rawSocket>;
virtualinvoke v.<java.net.Socket: void setSoTimeout(int)>(v);
label:
v = staticinvoke <okhttp.internal.platform.Platform: okhttp.internal.platform.Platform get()>();
v = v.<okhttp.internal.connection.RealConnection: java.net.Socket rawSocket>;
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: java.net.InetSocketAddress socketAddress()>();
virtualinvoke v.<okhttp.internal.platform.Platform: void connectSocket(java.net.Socket,java.net.InetSocketAddress,int)>(v, v, v);
label:
goto label;
label:
v := @caughtexception;
v = new java.net.ConnectException;
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: java.net.InetSocketAddress socketAddress()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.net.InetSocketAddress)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Failed to connect to \u0001");
specialinvoke v.<java.net.ConnectException: void <init>(java.lang.String)>(v);
virtualinvoke v.<java.net.ConnectException: java.lang.Throwable initCause(java.lang.Throwable)>(v);
throw v;
label:
v = v.<okhttp.internal.connection.RealConnection: java.net.Socket rawSocket>;
v = staticinvoke <okio.Okio: okio.Source source(java.net.Socket)>(v);
v = staticinvoke <okio.Okio: okio.BufferedSource buffer(okio.Source)>(v);
v.<okhttp.internal.connection.RealConnection: okio.BufferedSource source> = v;
v = v.<okhttp.internal.connection.RealConnection: java.net.Socket rawSocket>;
v = staticinvoke <okio.Okio: okio.Sink sink(java.net.Socket)>(v);
v = staticinvoke <okio.Okio: okio.BufferedSink buffer(okio.Sink)>(v);
v.<okhttp.internal.connection.RealConnection: okio.BufferedSink sink> = v;
label:
goto label;
label:
v := @caughtexception;
v = "throw with null exception";
v = virtualinvoke v.<java.lang.NullPointerException: java.lang.String getMessage()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
v = new java.io.IOException;
specialinvoke v.<java.io.IOException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
return;
catch java.net.ConnectException from label to label with label;
catch java.lang.NullPointerException from label to label with label;
}
private void establishProtocol(okhttp.internal.connection.ConnectionSpecSelector, int, okhttp.Call, okhttp.EventListener) throws java.io.IOException
{
java.net.Socket v, v;
okhttp.Address v, v;
okhttp.Route v, v;
okhttp.EventListener v;
int v;
okhttp.Call v;
boolean v;
javax.net.ssl.SSLSocketFactory v;
java.util.List v;
okhttp.Protocol v, v, v, v, v;
okhttp.Handshake v;
okhttp.internal.connection.ConnectionSpecSelector v;
okhttp.internal.connection.RealConnection v;
v := @this: okhttp.internal.connection.RealConnection;
v := @parameter: okhttp.internal.connection.ConnectionSpecSelector;
v := @parameter: int;
v := @parameter: okhttp.Call;
v := @parameter: okhttp.EventListener;
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: okhttp.Address address()>();
v = virtualinvoke v.<okhttp.Address: javax.net.ssl.SSLSocketFactory sslSocketFactory()>();
if v != null goto label;
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: okhttp.Address address()>();
v = virtualinvoke v.<okhttp.Address: java.util.List protocols()>();
v = <okhttp.Protocol: okhttp.Protocol H2_PRIOR_KNOWLEDGE>;
v = interfaceinvoke v.<java.util.List: boolean contains(java.lang.Object)>(v);
if v == 0 goto label;
v = v.<okhttp.internal.connection.RealConnection: java.net.Socket rawSocket>;
v.<okhttp.internal.connection.RealConnection: java.net.Socket socket> = v;
v = <okhttp.Protocol: okhttp.Protocol H2_PRIOR_KNOWLEDGE>;
v.<okhttp.internal.connection.RealConnection: okhttp.Protocol protocol> = v;
specialinvoke v.<okhttp.internal.connection.RealConnection: void startHttp2(int)>(v);
return;
label:
v = v.<okhttp.internal.connection.RealConnection: java.net.Socket rawSocket>;
v.<okhttp.internal.connection.RealConnection: java.net.Socket socket> = v;
v = <okhttp.Protocol: okhttp.Protocol HTTP_1_1>;
v.<okhttp.internal.connection.RealConnection: okhttp.Protocol protocol> = v;
return;
label:
virtualinvoke v.<okhttp.EventListener: void secureConnectStart(okhttp.Call)>(v);
specialinvoke v.<okhttp.internal.connection.RealConnection: void connectTls(okhttp.internal.connection.ConnectionSpecSelector)>(v);
v = v.<okhttp.internal.connection.RealConnection: okhttp.Handshake handshake>;
virtualinvoke v.<okhttp.EventListener: void secureConnectEnd(okhttp.Call,okhttp.Handshake)>(v, v);
v = v.<okhttp.internal.connection.RealConnection: okhttp.Protocol protocol>;
v = <okhttp.Protocol: okhttp.Protocol HTTP_2>;
if v != v goto label;
specialinvoke v.<okhttp.internal.connection.RealConnection: void startHttp2(int)>(v);
label:
return;
}
private void startHttp2(int) throws java.io.IOException
{
java.net.Socket v, v;
okhttp.Address v;
okhttp.Route v;
okio.BufferedSink v;
int v;
java.lang.String v;
okhttp.internal.http.Http2Connection v, v;
okio.BufferedSource v;
okhttp.internal.http.Http2Connection$Builder v, v, v, v;
okhttp.HttpUrl v;
okhttp.internal.connection.RealConnection v;
v := @this: okhttp.internal.connection.RealConnection;
v := @parameter: int;
v = v.<okhttp.internal.connection.RealConnection: java.net.Socket socket>;
virtualinvoke v.<java.net.Socket: void setSoTimeout(int)>(0);
v = new okhttp.internal.http.Http2Connection$Builder;
specialinvoke v.<okhttp.internal.http.Http2Connection$Builder: void <init>(boolean)>(1);
v = v.<okhttp.internal.connection.RealConnection: java.net.Socket socket>;
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: okhttp.Address address()>();
v = virtualinvoke v.<okhttp.Address: okhttp.HttpUrl url()>();
v = virtualinvoke v.<okhttp.HttpUrl: java.lang.String host()>();
v = v.<okhttp.internal.connection.RealConnection: okio.BufferedSource source>;
v = v.<okhttp.internal.connection.RealConnection: okio.BufferedSink sink>;
v = virtualinvoke v.<okhttp.internal.http.Http2Connection$Builder: okhttp.internal.http.Http2Connection$Builder socket(java.net.Socket,java.lang.String,okio.BufferedSource,okio.BufferedSink)>(v, v, v, v);
v = virtualinvoke v.<okhttp.internal.http.Http2Connection$Builder: okhttp.internal.http.Http2Connection$Builder listener(okhttp.internal.http.Http2Connection$Listener)>(v);
v = virtualinvoke v.<okhttp.internal.http.Http2Connection$Builder: okhttp.internal.http.Http2Connection$Builder pingIntervalMillis(int)>(v);
v = virtualinvoke v.<okhttp.internal.http.Http2Connection$Builder: okhttp.internal.http.Http2Connection build()>();
v.<okhttp.internal.connection.RealConnection: okhttp.internal.http.Http2Connection http2Connection> = v;
v = v.<okhttp.internal.connection.RealConnection: okhttp.internal.http.Http2Connection http2Connection>;
virtualinvoke v.<okhttp.internal.http.Http2Connection: void start()>();
return;
}
private void connectTls(okhttp.internal.connection.ConnectionSpecSelector) throws java.io.IOException
{
okhttp.CertificatePinner v;
okhttp.Address v;
okhttp.Route v;
okio.BufferedSink v;
okhttp.ConnectionSpec v;
javax.net.ssl.HostnameVerifier v;
boolean v, v, v, v, v;
javax.net.ssl.SSLSocketFactory v;
okio.BufferedSource v;
java.util.List v, v, v, v;
java.security.Principal v;
okhttp.Protocol v;
okhttp.Handshake v;
okhttp.HttpUrl v, v, v, v, v, v, v;
okhttp.internal.connection.RealConnection v;
okhttp.internal.platform.Platform v, v, v, v;
java.lang.Throwable v;
java.net.Socket v, v, v, v;
okio.Source v;
java.lang.AssertionError v;
okio.Sink v;
javax.net.ssl.SSLSession v;
int v;
java.lang.String v, v, v, v, v, v, v, v, v, v, v;
java.io.IOException v;
java.lang.Object v;
okhttp.internal.connection.ConnectionSpecSelector v;
javax.net.ssl.SSLPeerUnverifiedException v, v;
v := @this: okhttp.internal.connection.RealConnection;
v := @parameter: okhttp.internal.connection.ConnectionSpecSelector;
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: okhttp.Address address()>();
v = virtualinvoke v.<okhttp.Address: javax.net.ssl.SSLSocketFactory sslSocketFactory()>();
label:
v = v.<okhttp.internal.connection.RealConnection: java.net.Socket rawSocket>;
v = virtualinvoke v.<okhttp.Address: okhttp.HttpUrl url()>();
v = virtualinvoke v.<okhttp.HttpUrl: java.lang.String host()>();
v = virtualinvoke v.<okhttp.Address: okhttp.HttpUrl url()>();
v = virtualinvoke v.<okhttp.HttpUrl: int port()>();
v = virtualinvoke v.<javax.net.ssl.SSLSocketFactory: java.net.Socket createSocket(java.net.Socket,java.lang.String,int,boolean)>(v, v, v, 1);
v = virtualinvoke v.<okhttp.internal.connection.ConnectionSpecSelector: okhttp.ConnectionSpec configureSecureSocket(javax.net.ssl.SSLSocket)>(v);
v = virtualinvoke v.<okhttp.ConnectionSpec: boolean supportsTlsExtensions()>();
if v == 0 goto label;
v = staticinvoke <okhttp.internal.platform.Platform: okhttp.internal.platform.Platform get()>();
v = virtualinvoke v.<okhttp.Address: okhttp.HttpUrl url()>();
v = virtualinvoke v.<okhttp.HttpUrl: java.lang.String host()>();
v = virtualinvoke v.<okhttp.Address: java.util.List protocols()>();
virtualinvoke v.<okhttp.internal.platform.Platform: void configureTlsExtensions(javax.net.ssl.SSLSocket,java.lang.String,java.util.List)>(v, v, v);
label:
virtualinvoke v.<javax.net.ssl.SSLSocket: void startHandshake()>();
v = virtualinvoke v.<javax.net.ssl.SSLSocket: javax.net.ssl.SSLSession getSession()>();
v = staticinvoke <okhttp.Handshake: okhttp.Handshake get(javax.net.ssl.SSLSession)>(v);
v = virtualinvoke v.<okhttp.Address: javax.net.ssl.HostnameVerifier hostnameVerifier()>();
v = virtualinvoke v.<okhttp.Address: okhttp.HttpUrl url()>();
v = virtualinvoke v.<okhttp.HttpUrl: java.lang.String host()>();
v = interfaceinvoke v.<javax.net.ssl.HostnameVerifier: boolean verify(java.lang.String,javax.net.ssl.SSLSession)>(v, v);
if v != 0 goto label;
v = virtualinvoke v.<okhttp.Handshake: java.util.List peerCertificates()>();
v = interfaceinvoke v.<java.util.List: boolean isEmpty()>();
if v != 0 goto label;
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(0);
v = new javax.net.ssl.SSLPeerUnverifiedException;
v = virtualinvoke v.<okhttp.Address: okhttp.HttpUrl url()>();
v = virtualinvoke v.<okhttp.HttpUrl: java.lang.String host()>();
v = staticinvoke <okhttp.CertificatePinner: java.lang.String pin(java.security.cert.Certificate)>(v);
v = virtualinvoke v.<java.security.cert.X509Certificate: java.security.Principal getSubjectDN()>();
v = interfaceinvoke v.<java.security.Principal: java.lang.String getName()>();
v = staticinvoke <okhttp.internal.tls.OkHostnameVerifier: java.util.List allSubjectAltNames(java.security.cert.X509Certificate)>(v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,java.lang.String,java.lang.String,java.util.List)>(v, v, v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Hostname \u not verified:\n    certificate: \u0001\n    DN: \u0001\n    subjectAltNames: \u0001");
specialinvoke v.<javax.net.ssl.SSLPeerUnverifiedException: void <init>(java.lang.String)>(v);
throw v;
label:
v = new javax.net.ssl.SSLPeerUnverifiedException;
v = virtualinvoke v.<okhttp.Address: okhttp.HttpUrl url()>();
v = virtualinvoke v.<okhttp.HttpUrl: java.lang.String host()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Hostname \u not verified (no certificates)");
specialinvoke v.<javax.net.ssl.SSLPeerUnverifiedException: void <init>(java.lang.String)>(v);
throw v;
label:
v = virtualinvoke v.<okhttp.Address: okhttp.CertificatePinner certificatePinner()>();
v = virtualinvoke v.<okhttp.Address: okhttp.HttpUrl url()>();
v = virtualinvoke v.<okhttp.HttpUrl: java.lang.String host()>();
v = virtualinvoke v.<okhttp.Handshake: java.util.List peerCertificates()>();
virtualinvoke v.<okhttp.CertificatePinner: void check(java.lang.String,java.util.List)>(v, v);
v = virtualinvoke v.<okhttp.ConnectionSpec: boolean supportsTlsExtensions()>();
if v == 0 goto label;
v = staticinvoke <okhttp.internal.platform.Platform: okhttp.internal.platform.Platform get()>();
v = virtualinvoke v.<okhttp.internal.platform.Platform: java.lang.String getSelectedProtocol(javax.net.ssl.SSLSocket)>(v);
goto label;
label:
v = null;
label:
v.<okhttp.internal.connection.RealConnection: java.net.Socket socket> = v;
v = v.<okhttp.internal.connection.RealConnection: java.net.Socket socket>;
v = staticinvoke <okio.Okio: okio.Source source(java.net.Socket)>(v);
v = staticinvoke <okio.Okio: okio.BufferedSource buffer(okio.Source)>(v);
v.<okhttp.internal.connection.RealConnection: okio.BufferedSource source> = v;
v = v.<okhttp.internal.connection.RealConnection: java.net.Socket socket>;
v = staticinvoke <okio.Okio: okio.Sink sink(java.net.Socket)>(v);
v = staticinvoke <okio.Okio: okio.BufferedSink buffer(okio.Sink)>(v);
v.<okhttp.internal.connection.RealConnection: okio.BufferedSink sink> = v;
v.<okhttp.internal.connection.RealConnection: okhttp.Handshake handshake> = v;
if v == null goto label;
v = staticinvoke <okhttp.Protocol: okhttp.Protocol get(java.lang.String)>(v);
goto label;
label:
v = <okhttp.Protocol: okhttp.Protocol HTTP_1_1>;
label:
v.<okhttp.internal.connection.RealConnection: okhttp.Protocol protocol> = v;
label:
v = staticinvoke <okhttp.internal.platform.Platform: okhttp.internal.platform.Platform get()>();
virtualinvoke v.<okhttp.internal.platform.Platform: void afterHandshake(javax.net.ssl.SSLSocket)>(v);
goto label;
label:
v := @caughtexception;
v = staticinvoke <okhttp.internal.Util: boolean isAndroidGetsocknameError(java.lang.AssertionError)>(v);
if v == 0 goto label;
v = new java.io.IOException;
specialinvoke v.<java.io.IOException: void <init>(java.lang.Throwable)>(v);
throw v;
label:
throw v;
label:
v := @caughtexception;
if v == null goto label;
v = staticinvoke <okhttp.internal.platform.Platform: okhttp.internal.platform.Platform get()>();
virtualinvoke v.<okhttp.internal.platform.Platform: void afterHandshake(javax.net.ssl.SSLSocket)>(v);
label:
staticinvoke <okhttp.internal.Util: void closeQuietly(java.net.Socket)>(v);
throw v;
label:
return;
catch java.lang.AssertionError from label to label with label;
catch java.lang.Throwable from label to label with label;
}
private okhttp.Request createTunnel(int, int, okhttp.Request, okhttp.HttpUrl) throws java.io.IOException
{
okhttp.Authenticator v;
okhttp.Address v;
okhttp.Route v, v;
okio.Timeout v, v;
byte v;
okio.BufferedSink v, v, v;
boolean v, v, v;
okhttp.Request v;
okio.BufferedSource v, v, v;
okhttp.HttpUrl v;
okhttp.internal.connection.RealConnection v;
okhttp.internal.http.Http1Codec v;
okio.Source v;
long v;
okhttp.Headers v;
int v, v, v, v;
okhttp.Response$Builder v, v;
okhttp.Response v;
java.lang.String v, v, v, v, v;
okio.Buffer v, v;
java.io.IOException v, v, v;
java.util.concurrent.TimeUnit v, v, v;
v := @this: okhttp.internal.connection.RealConnection;
v := @parameter: int;
v := @parameter: int;
v := @parameter: okhttp.Request;
v := @parameter: okhttp.HttpUrl;
v = staticinvoke <okhttp.internal.Util: java.lang.String hostHeader(okhttp.HttpUrl,boolean)>(v, 1);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("CONNECT \u HTTP/1.1");
label:
v = new okhttp.internal.http.Http1Codec;
v = v.<okhttp.internal.connection.RealConnection: okio.BufferedSource source>;
v = v.<okhttp.internal.connection.RealConnection: okio.BufferedSink sink>;
specialinvoke v.<okhttp.internal.http.Http1Codec: void <init>(okhttp.OkHttpClient,okhttp.internal.connection.StreamAllocation,okio.BufferedSource,okio.BufferedSink)>(null, null, v, v);
v = v.<okhttp.internal.connection.RealConnection: okio.BufferedSource source>;
v = interfaceinvoke v.<okio.BufferedSource: okio.Timeout timeout()>();
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MILLISECONDS>;
virtualinvoke v.<okio.Timeout: okio.Timeout timeout(long,java.util.concurrent.TimeUnit)>(v, v);
v = v.<okhttp.internal.connection.RealConnection: okio.BufferedSink sink>;
v = interfaceinvoke v.<okio.BufferedSink: okio.Timeout timeout()>();
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MILLISECONDS>;
virtualinvoke v.<okio.Timeout: okio.Timeout timeout(long,java.util.concurrent.TimeUnit)>(v, v);
v = virtualinvoke v.<okhttp.Request: okhttp.Headers headers()>();
virtualinvoke v.<okhttp.internal.http.Http1Codec: void writeRequest(okhttp.Headers,java.lang.String)>(v, v);
virtualinvoke v.<okhttp.internal.http.Http1Codec: void finishRequest()>();
v = virtualinvoke v.<okhttp.internal.http.Http1Codec: okhttp.Response$Builder readResponseHeaders(boolean)>(0);
v = virtualinvoke v.<okhttp.Response$Builder: okhttp.Response$Builder request(okhttp.Request)>(v);
v = virtualinvoke v.<okhttp.Response$Builder: okhttp.Response build()>();
v = staticinvoke <okhttp.internal.http.HttpHeaders: long contentLength(okhttp.Response)>(v);
v = v cmp -1L;
if v != 0 goto label;
v = 0L;
label:
v = virtualinvoke v.<okhttp.internal.http.Http1Codec: okio.Source newFixedLengthSource(long)>(v);
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MILLISECONDS>;
staticinvoke <okhttp.internal.Util: boolean skipAll(okio.Source,int,java.util.concurrent.TimeUnit)>(v, 2147483647, v);
interfaceinvoke v.<okio.Source: void close()>();
v = virtualinvoke v.<okhttp.Response: int code()>();
lookupswitch(v)
{
case 200: goto label;
case 407: goto label;
default: goto label;
};
label:
v = v.<okhttp.internal.connection.RealConnection: okio.BufferedSource source>;
v = interfaceinvoke v.<okio.BufferedSource: okio.Buffer buffer()>();
v = virtualinvoke v.<okio.Buffer: boolean exhausted()>();
if v == 0 goto label;
v = v.<okhttp.internal.connection.RealConnection: okio.BufferedSink sink>;
v = interfaceinvoke v.<okio.BufferedSink: okio.Buffer buffer()>();
v = virtualinvoke v.<okio.Buffer: boolean exhausted()>();
if v != 0 goto label;
label:
v = new java.io.IOException;
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>("TLS tunnel buffered too many bytes!");
throw v;
label:
return null;
label:
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: okhttp.Address address()>();
v = virtualinvoke v.<okhttp.Address: okhttp.Authenticator proxyAuthenticator()>();
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = interfaceinvoke v.<okhttp.Authenticator: okhttp.Request authenticate(okhttp.Route,okhttp.Response)>(v, v);
if v != null goto label;
v = new java.io.IOException;
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>("Failed to authenticate with proxy");
throw v;
label:
v = "close";
v = virtualinvoke v.<okhttp.Response: java.lang.String header(java.lang.String)>("Connection");
v = virtualinvoke v.<java.lang.String: boolean equalsIgnoreCase(java.lang.String)>(v);
if v == 0 goto label;
return v;
label:
v = new java.io.IOException;
v = virtualinvoke v.<okhttp.Response: int code()>();
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (int)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Unexpected response code for CONNECT: \u0001");
specialinvoke v.<java.io.IOException: void <init>(java.lang.String)>(v);
throw v;
}
private okhttp.Request createTunnelRequest() throws java.io.IOException
{
okhttp.Request$Builder v, v, v, v, v, v;
okhttp.Authenticator v;
okhttp.Address v, v, v;
okhttp.Route v, v, v, v;
okhttp.ResponseBody v;
okhttp.Request v, v, v;
okhttp.Protocol v;
okhttp.HttpUrl v, v;
okhttp.internal.connection.RealConnection v;
okhttp.Response$Builder v, v, v, v, v, v, v, v, v;
okhttp.Response v;
java.lang.String v, v;
v := @this: okhttp.internal.connection.RealConnection;
v = new okhttp.Request$Builder;
specialinvoke v.<okhttp.Request$Builder: void <init>()>();
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: okhttp.Address address()>();
v = virtualinvoke v.<okhttp.Address: okhttp.HttpUrl url()>();
v = virtualinvoke v.<okhttp.Request$Builder: okhttp.Request$Builder url(okhttp.HttpUrl)>(v);
v = virtualinvoke v.<okhttp.Request$Builder: okhttp.Request$Builder method(java.lang.String,okhttp.RequestBody)>("CONNECT", null);
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: okhttp.Address address()>();
v = virtualinvoke v.<okhttp.Address: okhttp.HttpUrl url()>();
v = staticinvoke <okhttp.internal.Util: java.lang.String hostHeader(okhttp.HttpUrl,boolean)>(v, 1);
v = virtualinvoke v.<okhttp.Request$Builder: okhttp.Request$Builder header(java.lang.String,java.lang.String)>("Host", v);
v = virtualinvoke v.<okhttp.Request$Builder: okhttp.Request$Builder header(java.lang.String,java.lang.String)>("Proxy-Connection", "Keep-Alive");
v = staticinvoke <okhttp.internal.Version: java.lang.String userAgent()>();
v = virtualinvoke v.<okhttp.Request$Builder: okhttp.Request$Builder header(java.lang.String,java.lang.String)>("User-Agent", v);
v = virtualinvoke v.<okhttp.Request$Builder: okhttp.Request build()>();
v = new okhttp.Response$Builder;
specialinvoke v.<okhttp.Response$Builder: void <init>()>();
v = virtualinvoke v.<okhttp.Response$Builder: okhttp.Response$Builder request(okhttp.Request)>(v);
v = <okhttp.Protocol: okhttp.Protocol HTTP_1_1>;
v = virtualinvoke v.<okhttp.Response$Builder: okhttp.Response$Builder protocol(okhttp.Protocol)>(v);
v = virtualinvoke v.<okhttp.Response$Builder: okhttp.Response$Builder code(int)>(407);
v = virtualinvoke v.<okhttp.Response$Builder: okhttp.Response$Builder message(java.lang.String)>("Preemptive Authenticate");
v = <okhttp.internal.Util: okhttp.ResponseBody EMPTY_RESPONSE>;
v = virtualinvoke v.<okhttp.Response$Builder: okhttp.Response$Builder body(okhttp.ResponseBody)>(v);
v = virtualinvoke v.<okhttp.Response$Builder: okhttp.Response$Builder sentRequestAtMillis(long)>(-1L);
v = virtualinvoke v.<okhttp.Response$Builder: okhttp.Response$Builder receivedResponseAtMillis(long)>(-1L);
v = virtualinvoke v.<okhttp.Response$Builder: okhttp.Response$Builder header(java.lang.String,java.lang.String)>("Proxy-Authenticate", "OkHttp-Preemptive");
v = virtualinvoke v.<okhttp.Response$Builder: okhttp.Response build()>();
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: okhttp.Address address()>();
v = virtualinvoke v.<okhttp.Address: okhttp.Authenticator proxyAuthenticator()>();
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = interfaceinvoke v.<okhttp.Authenticator: okhttp.Request authenticate(okhttp.Route,okhttp.Response)>(v, v);
if v == null goto label;
v = v;
goto label;
label:
v = v;
label:
return v;
}
public boolean isEligible(okhttp.Address, okhttp.Route)
{
okhttp.CertificatePinner v;
okhttp.Address v, v, v, v;
okhttp.Route v, v, v, v, v;
java.net.Proxy v, v;
javax.net.ssl.HostnameVerifier v;
boolean v, v, v, v, v;
okhttp.internal.http.Http2Connection v;
java.net.InetSocketAddress v, v;
java.util.List v, v;
okhttp.Handshake v;
okhttp.HttpUrl v, v, v, v;
okhttp.internal.connection.RealConnection v;
java.net.Proxy$Type v, v, v, v;
okhttp.internal.Internal v;
int v, v;
java.lang.String v, v, v;
okhttp.internal.tls.OkHostnameVerifier v;
javax.net.ssl.SSLPeerUnverifiedException v;
v := @this: okhttp.internal.connection.RealConnection;
v := @parameter: okhttp.Address;
v := @parameter: okhttp.Route;
v = v.<okhttp.internal.connection.RealConnection: java.util.List allocations>;
v = interfaceinvoke v.<java.util.List: int size()>();
v = v.<okhttp.internal.connection.RealConnection: int allocationLimit>;
if v >= v goto label;
v = v.<okhttp.internal.connection.RealConnection: boolean noNewStreams>;
if v == 0 goto label;
label:
return 0;
label:
v = <okhttp.internal.Internal: okhttp.internal.Internal instance>;
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: okhttp.Address address()>();
v = virtualinvoke v.<okhttp.internal.Internal: boolean equalsNonHost(okhttp.Address,okhttp.Address)>(v, v);
if v != 0 goto label;
return 0;
label:
v = virtualinvoke v.<okhttp.Address: okhttp.HttpUrl url()>();
v = virtualinvoke v.<okhttp.HttpUrl: java.lang.String host()>();
v = virtualinvoke v.<okhttp.internal.connection.RealConnection: okhttp.Route route()>();
v = virtualinvoke v.<okhttp.Route: okhttp.Address address()>();
v = virtualinvoke v.<okhttp.Address: okhttp.HttpUrl url()>();
v = virtualinvoke v.<okhttp.HttpUrl: java.lang.String host()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v == 0 goto label;
return 1;
label:
v = v.<okhttp.internal.connection.RealConnection: okhttp.internal.http.Http2Connection http2Connection>;
if v != null goto label;
return 0;
label:
if v != null goto label;
return 0;
label:
v = virtualinvoke v.<okhttp.Route: java.net.Proxy proxy()>();
v = virtualinvoke v.<java.net.Proxy: java.net.Proxy$Type type()>();
v = <java.net.Proxy$Type: java.net.Proxy$Type DIRECT>;
if v == v goto label;
return 0;
label:
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: java.net.Proxy proxy()>();
v = virtualinvoke v.<java.net.Proxy: java.net.Proxy$Type type()>();
v = <java.net.Proxy$Type: java.net.Proxy$Type DIRECT>;
if v == v goto label;
return 0;
label:
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: java.net.InetSocketAddress socketAddress()>();
v = virtualinvoke v.<okhttp.Route: java.net.InetSocketAddress socketAddress()>();
v = virtualinvoke v.<java.net.InetSocketAddress: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
return 0;
label:
v = virtualinvoke v.<okhttp.Route: okhttp.Address address()>();
v = virtualinvoke v.<okhttp.Address: javax.net.ssl.HostnameVerifier hostnameVerifier()>();
v = <okhttp.internal.tls.OkHostnameVerifier: okhttp.internal.tls.OkHostnameVerifier INSTANCE>;
if v == v goto label;
return 0;
label:
v = virtualinvoke v.<okhttp.Address: okhttp.HttpUrl url()>();
v = virtualinvoke v.<okhttp.internal.connection.RealConnection: boolean supportsUrl(okhttp.HttpUrl)>(v);
if v != 0 goto label;
return 0;
label:
v = virtualinvoke v.<okhttp.Address: okhttp.CertificatePinner certificatePinner()>();
v = virtualinvoke v.<okhttp.Address: okhttp.HttpUrl url()>();
v = virtualinvoke v.<okhttp.HttpUrl: java.lang.String host()>();
v = virtualinvoke v.<okhttp.internal.connection.RealConnection: okhttp.Handshake handshake()>();
v = virtualinvoke v.<okhttp.Handshake: java.util.List peerCertificates()>();
virtualinvoke v.<okhttp.CertificatePinner: void check(java.lang.String,java.util.List)>(v, v);
label:
goto label;
label:
v := @caughtexception;
return 0;
label:
return 1;
catch javax.net.ssl.SSLPeerUnverifiedException from label to label with label;
}
public boolean supportsUrl(okhttp.HttpUrl)
{
okhttp.Address v, v;
okhttp.Route v, v;
int v, v;
java.lang.String v, v, v;
okhttp.internal.tls.OkHostnameVerifier v;
boolean v, v, v;
java.util.List v;
java.lang.Object v;
okhttp.Handshake v, v;
okhttp.HttpUrl v, v, v;
okhttp.internal.connection.RealConnection v;
v := @this: okhttp.internal.connection.RealConnection;
v := @parameter: okhttp.HttpUrl;
v = virtualinvoke v.<okhttp.HttpUrl: int port()>();
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: okhttp.Address address()>();
v = virtualinvoke v.<okhttp.Address: okhttp.HttpUrl url()>();
v = virtualinvoke v.<okhttp.HttpUrl: int port()>();
if v == v goto label;
return 0;
label:
v = virtualinvoke v.<okhttp.HttpUrl: java.lang.String host()>();
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: okhttp.Address address()>();
v = virtualinvoke v.<okhttp.Address: okhttp.HttpUrl url()>();
v = virtualinvoke v.<okhttp.HttpUrl: java.lang.String host()>();
v = virtualinvoke v.<java.lang.String: boolean equals(java.lang.Object)>(v);
if v != 0 goto label;
v = v.<okhttp.internal.connection.RealConnection: okhttp.Handshake handshake>;
if v == null goto label;
v = <okhttp.internal.tls.OkHostnameVerifier: okhttp.internal.tls.OkHostnameVerifier INSTANCE>;
v = virtualinvoke v.<okhttp.HttpUrl: java.lang.String host()>();
v = v.<okhttp.internal.connection.RealConnection: okhttp.Handshake handshake>;
v = virtualinvoke v.<okhttp.Handshake: java.util.List peerCertificates()>();
v = interfaceinvoke v.<java.util.List: java.lang.Object get(int)>(0);
v = virtualinvoke v.<okhttp.internal.tls.OkHostnameVerifier: boolean verify(java.lang.String,java.security.cert.X509Certificate)>(v, v);
if v == 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
label:
return 1;
}
public okhttp.internal.http.HttpCodec newCodec(okhttp.OkHttpClient, okhttp.Interceptor$Chain, okhttp.internal.connection.StreamAllocation) throws java.net.SocketException
{
okhttp.internal.http.Http1Codec v;
java.net.Socket v;
okio.Timeout v, v;
okhttp.internal.connection.StreamAllocation v;
okio.BufferedSink v, v;
int v, v, v;
okhttp.internal.http.Http2Connection v, v;
okhttp.internal.http.Http2Codec v;
okhttp.Interceptor$Chain v;
java.util.concurrent.TimeUnit v, v;
okio.BufferedSource v, v;
okhttp.OkHttpClient v;
okhttp.internal.connection.RealConnection v;
v := @this: okhttp.internal.connection.RealConnection;
v := @parameter: okhttp.OkHttpClient;
v := @parameter: okhttp.Interceptor$Chain;
v := @parameter: okhttp.internal.connection.StreamAllocation;
v = v.<okhttp.internal.connection.RealConnection: okhttp.internal.http.Http2Connection http2Connection>;
if v == null goto label;
v = new okhttp.internal.http.Http2Codec;
v = v.<okhttp.internal.connection.RealConnection: okhttp.internal.http.Http2Connection http2Connection>;
specialinvoke v.<okhttp.internal.http.Http2Codec: void <init>(okhttp.OkHttpClient,okhttp.Interceptor$Chain,okhttp.internal.connection.StreamAllocation,okhttp.internal.http.Http2Connection)>(v, v, v, v);
return v;
label:
v = v.<okhttp.internal.connection.RealConnection: java.net.Socket socket>;
v = interfaceinvoke v.<okhttp.Interceptor$Chain: int readTimeoutMillis()>();
virtualinvoke v.<java.net.Socket: void setSoTimeout(int)>(v);
v = v.<okhttp.internal.connection.RealConnection: okio.BufferedSource source>;
v = interfaceinvoke v.<okio.BufferedSource: okio.Timeout timeout()>();
v = interfaceinvoke v.<okhttp.Interceptor$Chain: int readTimeoutMillis()>();
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MILLISECONDS>;
virtualinvoke v.<okio.Timeout: okio.Timeout timeout(long,java.util.concurrent.TimeUnit)>(v, v);
v = v.<okhttp.internal.connection.RealConnection: okio.BufferedSink sink>;
v = interfaceinvoke v.<okio.BufferedSink: okio.Timeout timeout()>();
v = interfaceinvoke v.<okhttp.Interceptor$Chain: int writeTimeoutMillis()>();
v = <java.util.concurrent.TimeUnit: java.util.concurrent.TimeUnit MILLISECONDS>;
virtualinvoke v.<okio.Timeout: okio.Timeout timeout(long,java.util.concurrent.TimeUnit)>(v, v);
v = new okhttp.internal.http.Http1Codec;
v = v.<okhttp.internal.connection.RealConnection: okio.BufferedSource source>;
v = v.<okhttp.internal.connection.RealConnection: okio.BufferedSink sink>;
specialinvoke v.<okhttp.internal.http.Http1Codec: void <init>(okhttp.OkHttpClient,okhttp.internal.connection.StreamAllocation,okio.BufferedSource,okio.BufferedSink)>(v, v, v, v);
return v;
}
public okhttp.internal.ws.RealWebSocket$Streams newWebSocketStreams(okhttp.internal.connection.StreamAllocation)
{
okio.BufferedSource v;
okhttp.internal.connection.StreamAllocation v;
okio.BufferedSink v;
okhttp.internal.connection.RealConnection$1 v;
okhttp.internal.connection.RealConnection v;
v := @this: okhttp.internal.connection.RealConnection;
v := @parameter: okhttp.internal.connection.StreamAllocation;
v = new okhttp.internal.connection.RealConnection$1;
v = v.<okhttp.internal.connection.RealConnection: okio.BufferedSource source>;
v = v.<okhttp.internal.connection.RealConnection: okio.BufferedSink sink>;
specialinvoke v.<okhttp.internal.connection.RealConnection$1: void <init>(okhttp.internal.connection.RealConnection,boolean,okio.BufferedSource,okio.BufferedSink,okhttp.internal.connection.StreamAllocation)>(v, 1, v, v, v);
return v;
}
public okhttp.Route route()
{
okhttp.Route v;
okhttp.internal.connection.RealConnection v;
v := @this: okhttp.internal.connection.RealConnection;
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
return v;
}
public void cancel()
{
java.net.Socket v;
okhttp.internal.connection.RealConnection v;
v := @this: okhttp.internal.connection.RealConnection;
v = v.<okhttp.internal.connection.RealConnection: java.net.Socket rawSocket>;
staticinvoke <okhttp.internal.Util: void closeQuietly(java.net.Socket)>(v);
return;
}
public java.net.Socket socket()
{
java.net.Socket v;
okhttp.internal.connection.RealConnection v;
v := @this: okhttp.internal.connection.RealConnection;
v = v.<okhttp.internal.connection.RealConnection: java.net.Socket socket>;
return v;
}
public boolean isHealthy(boolean)
{
java.lang.Throwable v;
java.net.Socket v, v, v, v, v, v, v, v;
long v;
java.net.SocketTimeoutException v;
int v;
boolean v, v, v, v, v, v;
okhttp.internal.http.Http2Connection v, v;
java.io.IOException v;
okio.BufferedSource v;
okhttp.internal.connection.RealConnection v;
v := @this: okhttp.internal.connection.RealConnection;
v := @parameter: boolean;
v = v.<okhttp.internal.connection.RealConnection: java.net.Socket socket>;
v = virtualinvoke v.<java.net.Socket: boolean isClosed()>();
if v != 0 goto label;
v = v.<okhttp.internal.connection.RealConnection: java.net.Socket socket>;
v = virtualinvoke v.<java.net.Socket: boolean isInputShutdown()>();
if v != 0 goto label;
v = v.<okhttp.internal.connection.RealConnection: java.net.Socket socket>;
v = virtualinvoke v.<java.net.Socket: boolean isOutputShutdown()>();
if v == 0 goto label;
label:
return 0;
label:
v = v.<okhttp.internal.connection.RealConnection: okhttp.internal.http.Http2Connection http2Connection>;
if v == null goto label;
v = v.<okhttp.internal.connection.RealConnection: okhttp.internal.http.Http2Connection http2Connection>;
v = staticinvoke <java.lang.System: long nanoTime()>();
v = virtualinvoke v.<okhttp.internal.http.Http2Connection: boolean isHealthy(long)>(v);
return v;
label:
if v == 0 goto label;
label:
v = v.<okhttp.internal.connection.RealConnection: java.net.Socket socket>;
v = virtualinvoke v.<java.net.Socket: int getSoTimeout()>();
label:
v = v.<okhttp.internal.connection.RealConnection: java.net.Socket socket>;
virtualinvoke v.<java.net.Socket: void setSoTimeout(int)>(1);
v = v.<okhttp.internal.connection.RealConnection: okio.BufferedSource source>;
v = interfaceinvoke v.<okio.BufferedSource: boolean exhausted()>();
if v == 0 goto label;
label:
v = v.<okhttp.internal.connection.RealConnection: java.net.Socket socket>;
virtualinvoke v.<java.net.Socket: void setSoTimeout(int)>(v);
label:
return 0;
label:
v = v.<okhttp.internal.connection.RealConnection: java.net.Socket socket>;
virtualinvoke v.<java.net.Socket: void setSoTimeout(int)>(v);
label:
return 1;
label:
v := @caughtexception;
v = v.<okhttp.internal.connection.RealConnection: java.net.Socket socket>;
virtualinvoke v.<java.net.Socket: void setSoTimeout(int)>(v);
throw v;
label:
v := @caughtexception;
goto label;
label:
v := @caughtexception;
return 0;
label:
return 1;
catch java.lang.Throwable from label to label with label;
catch java.net.SocketTimeoutException from label to label with label;
catch java.net.SocketTimeoutException from label to label with label;
catch java.io.IOException from label to label with label;
catch java.io.IOException from label to label with label;
catch java.io.IOException from label to label with label;
}
public void onStream(okhttp.internal.http.Http2Stream) throws java.io.IOException
{
okhttp.internal.connection.RealConnection v;
okhttp.internal.http.ErrorCode v;
okhttp.internal.http.Http2Stream v;
v := @this: okhttp.internal.connection.RealConnection;
v := @parameter: okhttp.internal.http.Http2Stream;
v = <okhttp.internal.http.ErrorCode: okhttp.internal.http.ErrorCode REFUSED_STREAM>;
virtualinvoke v.<okhttp.internal.http.Http2Stream: void close(okhttp.internal.http.ErrorCode)>(v);
return;
}
public void onSettings(okhttp.internal.http.Http2Connection)
{
java.lang.Throwable v;
okhttp.internal.http.Http2Connection v;
int v;
okhttp.ConnectionPool v;
okhttp.internal.connection.RealConnection v;
v := @this: okhttp.internal.connection.RealConnection;
v := @parameter: okhttp.internal.http.Http2Connection;
v = v.<okhttp.internal.connection.RealConnection: okhttp.ConnectionPool connectionPool>;
entermonitor v;
label:
v = virtualinvoke v.<okhttp.internal.http.Http2Connection: int maxConcurrentStreams()>();
v.<okhttp.internal.connection.RealConnection: int allocationLimit> = v;
exitmonitor v;
label:
goto label;
label:
v := @caughtexception;
exitmonitor v;
throw v;
label:
return;
catch java.lang.Throwable from label to label with label;
}
public okhttp.Handshake handshake()
{
okhttp.Handshake v;
okhttp.internal.connection.RealConnection v;
v := @this: okhttp.internal.connection.RealConnection;
v = v.<okhttp.internal.connection.RealConnection: okhttp.Handshake handshake>;
return v;
}
public boolean isMultiplexed()
{
okhttp.internal.http.Http2Connection v;
okhttp.internal.connection.RealConnection v;
boolean v;
v := @this: okhttp.internal.connection.RealConnection;
v = v.<okhttp.internal.connection.RealConnection: okhttp.internal.http.Http2Connection http2Connection>;
if v == null goto label;
v = 1;
goto label;
label:
v = 0;
label:
return v;
}
public okhttp.Protocol protocol()
{
okhttp.Protocol v;
okhttp.internal.connection.RealConnection v;
v := @this: okhttp.internal.connection.RealConnection;
v = v.<okhttp.internal.connection.RealConnection: okhttp.Protocol protocol>;
return v;
}
public java.lang.String toString()
{
okhttp.Address v, v;
okhttp.Route v, v, v, v;
java.net.Proxy v;
int v;
java.lang.String v, v;
java.net.InetSocketAddress v;
java.lang.Object v;
okhttp.Protocol v;
okhttp.Handshake v, v;
okhttp.HttpUrl v, v;
okhttp.internal.connection.RealConnection v;
v := @this: okhttp.internal.connection.RealConnection;
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: okhttp.Address address()>();
v = virtualinvoke v.<okhttp.Address: okhttp.HttpUrl url()>();
v = virtualinvoke v.<okhttp.HttpUrl: java.lang.String host()>();
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: okhttp.Address address()>();
v = virtualinvoke v.<okhttp.Address: okhttp.HttpUrl url()>();
v = virtualinvoke v.<okhttp.HttpUrl: int port()>();
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: java.net.Proxy proxy()>();
v = v.<okhttp.internal.connection.RealConnection: okhttp.Route route>;
v = virtualinvoke v.<okhttp.Route: java.net.InetSocketAddress socketAddress()>();
v = v.<okhttp.internal.connection.RealConnection: okhttp.Handshake handshake>;
if v == null goto label;
v = v.<okhttp.internal.connection.RealConnection: okhttp.Handshake handshake>;
v = virtualinvoke v.<okhttp.Handshake: okhttp.CipherSuite cipherSuite()>();
goto label;
label:
v = "none";
label:
v = v.<okhttp.internal.connection.RealConnection: okhttp.Protocol protocol>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String,int,java.net.Proxy,java.net.InetSocketAddress,java.lang.Object,okhttp.Protocol)>(v, v, v, v, v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("Connection{\u0001:\u, proxy=\u hostAddress=\u cipherSuite=\u protocol=\u0001}");
return v;
}
}