package okhttp3.internal.connection; import java.io.IOException; import java.io.InterruptedIOException; import java.net.ProtocolException; import java.net.UnknownServiceException; import java.security.cert.CertificateException; import java.util.Arrays; import java.util.List; import javax.net.ssl.SSLHandshakeException; import javax.net.ssl.SSLPeerUnverifiedException; import javax.net.ssl.SSLProtocolException; import javax.net.ssl.SSLSocket; import okhttp3.ConnectionSpec; import okhttp3.internal.Internal; /* loaded from: classes2.dex */ public final class ConnectionSpecSelector { private final List connectionSpecs; private boolean isFallback; private boolean isFallbackPossible; private int nextModeIndex = 0; public ConnectionSpecSelector(List list) { this.connectionSpecs = list; } private boolean isFallbackPossible(SSLSocket sSLSocket) { for (int i = this.nextModeIndex; i < this.connectionSpecs.size(); i++) { if (this.connectionSpecs.get(i).isCompatible(sSLSocket)) { return true; } } return false; } public ConnectionSpec configureSecureSocket(SSLSocket sSLSocket) throws IOException { ConnectionSpec connectionSpec; int i = this.nextModeIndex; int size = this.connectionSpecs.size(); while (true) { if (i >= size) { connectionSpec = null; break; } connectionSpec = this.connectionSpecs.get(i); if (connectionSpec.isCompatible(sSLSocket)) { this.nextModeIndex = i + 1; break; } i++; } if (connectionSpec != null) { this.isFallbackPossible = isFallbackPossible(sSLSocket); Internal.instance.apply(connectionSpec, sSLSocket, this.isFallback); return connectionSpec; } throw new UnknownServiceException("Unable to find acceptable protocols. isFallback=" + this.isFallback + ", modes=" + this.connectionSpecs + ", supported protocols=" + Arrays.toString(sSLSocket.getEnabledProtocols())); } public boolean connectionFailed(IOException iOException) { this.isFallback = true; if (!this.isFallbackPossible || (iOException instanceof ProtocolException) || (iOException instanceof InterruptedIOException)) { return false; } boolean z = iOException instanceof SSLHandshakeException; if ((z && (iOException.getCause() instanceof CertificateException)) || (iOException instanceof SSLPeerUnverifiedException)) { return false; } return z || (iOException instanceof SSLProtocolException); } }