testData/obfuscated/okhttp3/internal/connection/e.java (474 lines of code) (raw):

package okhttp3.internal.connection; import java.io.IOException; import java.lang.ref.Reference; import java.net.ConnectException; import java.net.Proxy; import java.net.Socket; import java.net.SocketException; import java.net.SocketTimeoutException; import java.net.Proxy.Type; import java.security.cert.X509Certificate; import java.util.ArrayList; import java.util.List; import java.util.concurrent.TimeUnit; import javax.net.ssl.SSLPeerUnverifiedException; import javax.net.ssl.SSLSession; import okhttp3.HttpUrl; import okhttp3.OkHttpClient; import okhttp3.Protocol; import okhttp3.internal.http2.ConnectionShutdownException; import okhttp3.internal.http2.ErrorCode; import okhttp3.internal.http2.StreamResetException; public final class e extends okhttp3.internal.http2.d.c implements okhttp3.j { static final boolean h = true; private Protocol A; private okhttp3.internal.http2.d B; private okio.e C; private okio.d D; private int E; private int F = 1; public final okhttp3.internal.connection.f b; boolean c; int d; int e; final List<Reference<okhttp3.internal.connection.i>> f = new ArrayList(); long g = 9223372036854775807L; private final okhttp3.ai w; private Socket x; private Socket y; private okhttp3.u z; public e(okhttp3.internal.connection.f var1, okhttp3.ai var2) { this.b = var1; this.w = var2; } private void G(int var1, int var2, int var3, okhttp3.f var4, okhttp3.r var5) throws IOException { okhttp3.ae var6 = this.N(); HttpUrl var7 = var6.i(); for(int var8 = 0; var8 < 21; ++var8) { this.H(var1, var2, var4, var5); var6 = this.M(var2, var3, var6, var7); if (var6 == null) { break; } okhttp3.internal.c.m(this.x); this.x = null; this.D = null; this.C = null; var5.g(var4, this.w.f(), this.w.e(), (Protocol)null); OkHttpClient.a.g(var4, this.w.f(), this.w.e(), (Protocol)null); } } private void H(int var1, int var2, okhttp3.f var3, okhttp3.r var4) throws IOException { Proxy var5 = this.w.e(); okhttp3.a var6 = this.w.d(); Socket var15; if (var5.type() != Type.DIRECT && var5.type() != Type.HTTP) { var15 = new Socket(var5); } else { var15 = var6.n().createSocket(); } this.x = var15; var4.d(var3, this.w.f(), var5); OkHttpClient.a.d(var3, this.w.f(), var5); this.x.setSoTimeout(var2); try { okhttp3.internal.e.e.n().a(this.x, this.w.f(), var1); } catch (ConnectException var9) { StringBuilder var13 = new StringBuilder(); var13.append("Failed to connect to "); var13.append(this.w.f()); ConnectException var14 = new ConnectException(var13.toString()); var14.initCause(var9); throw var14; } catch (NullPointerException var10) { StringBuilder var11 = new StringBuilder(); var11.append("Failed to connect to "); var11.append(this.w.f()); ConnectException var12 = new ConnectException(var11.toString()); var12.initCause(var10); throw var12; } try { this.C = okio.m.b(okio.m.k(this.x)); this.D = okio.m.c(okio.m.e(this.x)); } catch (NullPointerException var7) { throw new IOException(var7); } catch (IllegalArgumentException var8) { throw new IOException(var8); } } private void I(okhttp3.internal.connection.b var1, int var2, okhttp3.f var3, okhttp3.r var4) throws IOException { if (this.w.d().t() == null) { if (this.w.d().p().contains(Protocol.H2_PRIOR_KNOWLEDGE)) { this.y = this.x; this.A = Protocol.H2_PRIOR_KNOWLEDGE; this.J(var2); } else { this.y = this.x; this.A = Protocol.HTTP_1_1; } } else { var4.e(var3); OkHttpClient.a.e(var3); this.K(var1); var4.f(var3, this.z); OkHttpClient.a.f(var3, this.z); if (this.A == Protocol.HTTP_2) { this.J(var2); } } } private void J(int var1) throws IOException { this.y.setSoTimeout(0); okhttp3.internal.http2.d var2 = (new okhttp3.internal.http2.d.a(true)).i(this.y, this.w.d().l().j(), this.C, this.D).j(this).k(var1).l(); this.B = var2; var2.K(); } private void K(okhttp3.internal.connection.b param1) throws IOException { // $FF: Couldn't be decompiled } private boolean L(SSLSession var1) { boolean var2; if (!"NONE".equals(var1.getProtocol()) && !"SSL_NULL_WITH_NULL_NULL".equals(var1.getCipherSuite())) { var2 = true; } else { var2 = false; } return var2; } private okhttp3.ae M(int var1, int var2, okhttp3.ae var3, HttpUrl var4) throws IOException { StringBuilder var5 = new StringBuilder(); var5.append("CONNECT "); var5.append(okhttp3.internal.c.u(var4, true)); var5.append(" HTTP/1.1"); String var10 = var5.toString(); do { okhttp3.internal.c.a var6 = new okhttp3.internal.c.a((OkHttpClient)null, (okhttp3.internal.connection.e)null, this.C, this.D); this.C.k().c((long)var1, TimeUnit.MILLISECONDS); this.D.k().c((long)var2, TimeUnit.MILLISECONDS); var6.p(var3.k(), var10); var6.e(); var11 = var6.f(false).n(var3).C(); var6.s(var11); int var7 = var11.p(); if (var7 == 200) { if (this.C.f().j() && this.D.e().j()) { return null; } IOException var9 = new IOException("TLS tunnel buffered too many bytes!"); throw var9; } if (var7 != 407) { StringBuilder var8 = new StringBuilder(); var8.append("Unexpected response code for CONNECT: "); var8.append(var11.p()); throw new IOException(var8.toString()); } var3 = this.w.d().o().b(this.w, var11); if (var3 == null) { throw new IOException("Failed to authenticate with proxy"); } } while(!"close".equalsIgnoreCase(var11.t("Connection"))); return var3; } private okhttp3.ae N() throws IOException { okhttp3.ae var1 = (new okhttp3.ae.a()).i(this.w.d().l()).q("CONNECT", (okhttp3.af)null).k("Host", okhttp3.internal.c.u(this.w.d().l(), true)).k("Proxy-Connection", "Keep-Alive").k("User-Agent", okhttp3.internal.d.a()).v(); okhttp3.ag var2 = (new okhttp3.ag.a()).n(var1).o(Protocol.HTTP_1_1).p(407).q("Preemptive Authenticate").v(okhttp3.internal.c.d).z(-1L).A(-1L).s("Proxy-Authenticate", "OkHttp-Preemptive").C(); okhttp3.ae var3 = this.w.d().o().b(this.w, var2); if (var3 != null) { var1 = var3; } return var1; } private boolean O(List<okhttp3.ai> var1) { int var2 = var1.size(); for(int var3 = 0; var3 < var2; ++var3) { okhttp3.ai var4 = (okhttp3.ai)var1.get(var3); if (var4.e().type() == Type.DIRECT && this.w.e().type() == Type.DIRECT && this.w.f().equals(var4.f())) { return true; } } return false; } public okhttp3.ai a() { return this.w; } public void i() { // $FF: Couldn't be decompiled } public void j(int param1, int param2, int param3, int param4, boolean param5, okhttp3.f param6, okhttp3.r param7) { // $FF: Couldn't be decompiled } boolean k(okhttp3.a var1, List<okhttp3.ai> var2) { if (this.f.size() < this.F && !this.c) { if (!okhttp3.internal.a.i.d(this.w.d(), var1)) { return false; } if (var1.l().j().equals(this.a().d().l().j())) { return true; } if (this.B == null) { return false; } if (var2 != null && this.O(var2)) { if (var1.u() != okhttp3.internal.g.d.a) { return false; } if (!this.l(var1.l())) { return false; } try { var1.v().d(var1.l().j(), this.s().e()); return true; } catch (SSLPeerUnverifiedException var3) { } } } return false; } public boolean l(HttpUrl var1) { int var2 = var1.k(); int var3 = this.w.d().l().k(); boolean var4 = false; if (var2 != var3) { return false; } else if (!var1.j().equals(this.w.d().l().j())) { boolean var5 = var4; if (this.z != null) { var5 = var4; if (okhttp3.internal.g.d.a.b(var1.j(), (X509Certificate)this.z.e().get(0))) { var5 = true; } } return var5; } else { return true; } } okhttp3.internal.b.c m(OkHttpClient var1, okhttp3.z.a var2) throws SocketException { if (this.B != null) { return new okhttp3.internal.http2.e(var1, this, var2, this.B); } else { this.y.setSoTimeout(var2.f()); this.C.k().c((long)var2.f(), TimeUnit.MILLISECONDS); this.D.k().c((long)var2.g(), TimeUnit.MILLISECONDS); return new okhttp3.internal.c.a(var1, this, this.C, this.D); } } public void n() { okhttp3.internal.c.m(this.x); } public Socket o() { return this.y; } public boolean p(boolean var1) { if (!this.y.isClosed() && !this.y.isInputShutdown() && !this.y.isOutputShutdown()) { okhttp3.internal.http2.d var2 = this.B; if (var2 != null) { return var2.M(System.nanoTime()); } else if (var1) { int var3; try { var3 = this.y.getSoTimeout(); } catch (SocketTimeoutException var21) { boolean var26 = false; return true; } catch (IOException var22) { boolean var10001 = false; return false; } boolean var13 = false; try { var13 = true; this.y.setSoTimeout(1); var1 = this.C.j(); var13 = false; } finally { if (var13) { try { this.y.setSoTimeout(var3); } catch (SocketTimeoutException var14) { boolean var28 = false; return true; } catch (IOException var15) { boolean var27 = false; return false; } } } if (var1) { try { this.y.setSoTimeout(var3); return false; } catch (SocketTimeoutException var16) { boolean var30 = false; return true; } catch (IOException var17) { boolean var29 = false; } } else { try { this.y.setSoTimeout(var3); return true; } catch (SocketTimeoutException var18) { boolean var32 = false; return true; } catch (IOException var19) { boolean var31 = false; } } return false; } else { return true; } } else { return false; } } public void q(okhttp3.internal.http2.g var1) throws IOException { var1.r(ErrorCode.REFUSED_STREAM, (IOException)null); } public void r(okhttp3.internal.http2.d param1) { // $FF: Couldn't be decompiled } public okhttp3.u s() { return this.z; } public boolean t() { boolean var1; if (this.B != null) { var1 = true; } else { var1 = false; } return var1; } public String toString() { StringBuilder var1 = new StringBuilder(); var1.append("Connection{"); var1.append(this.w.d().l().j()); var1.append(":"); var1.append(this.w.d().l().k()); var1.append(", proxy="); var1.append(this.w.e()); var1.append(" hostAddress="); var1.append(this.w.f()); var1.append(" cipherSuite="); okhttp3.u var2 = this.z; Object var3; if (var2 != null) { var3 = var2.d(); } else { var3 = "none"; } var1.append(var3); var1.append(" protocol="); var1.append(this.A); var1.append('}'); return var1.toString(); } void u(IOException var1) { if (!h && Thread.holdsLock(this.b)) { throw new AssertionError(); } else { okhttp3.internal.connection.f var2 = this.b; synchronized(var2){} Throwable var10000; label874: { label873: { int var3; label880: { label881: { try { if (var1 instanceof StreamResetException) { var94 = ((StreamResetException)var1).errorCode; if (var94 != ErrorCode.REFUSED_STREAM) { break label881; } var3 = this.E + 1; this.E = var3; break label880; } } catch (Throwable var93) { var10000 = var93; boolean var10001 = false; break label874; } try { if (this.t() && !(var1 instanceof ConnectionShutdownException)) { break label873; } } catch (Throwable var92) { var10000 = var92; boolean var96 = false; break label874; } try { this.c = true; if (this.e != 0) { break label873; } } catch (Throwable var91) { var10000 = var91; boolean var97 = false; break label874; } if (var1 != null) { try { this.b.k(this.w, var1); } catch (Throwable var88) { var10000 = var88; boolean var98 = false; break label874; } } try { ++this.d; break label873; } catch (Throwable var87) { var10000 = var87; boolean var99 = false; break label874; } } try { if (var94 != ErrorCode.CANCEL) { this.c = true; ++this.d; } break label873; } catch (Throwable var90) { var10000 = var90; boolean var101 = false; break label874; } } if (var3 > 1) { try { this.c = true; ++this.d; } catch (Throwable var89) { var10000 = var89; boolean var100 = false; break label874; } } } label839: try { return; } catch (Throwable var86) { var10000 = var86; boolean var102 = false; break label839; } } while(true) { Throwable var95 = var10000; try { throw var95; } catch (Throwable var85) { var10000 = var85; boolean var103 = false; continue; } } } } }