CrackMe.apk
Download file
package okhttp3.internal.http2;
import java.io.EOFException;
import java.io.IOException;
import java.io.InterruptedIOException;
import java.net.SocketTimeoutException;
import java.util.ArrayDeque;
import java.util.List;
import kotlin.Metadata;
import kotlin.Unit;
import kotlin.jvm.internal.DefaultConstructorMarker;
import kotlin.jvm.internal.Intrinsics;
import okhttp3.Headers;
import okhttp3.internal.Util;
import okio.AsyncTimeout;
import okio.Buffer;
import okio.BufferedSource;
import okio.Sink;
import okio.Source;
import okio.Timeout;
@Metadata(bv = {1, 0, 3}, d1 = {"\u0000\u0001\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0010\b\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u000b\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0004\n\u0002\u0018\u0002\n\u0002\b\u0005\n\u0002\u0018\u0002\n\u0002\b\u0006\n\u0002\u0018\u0002\n\u0002\b\u0006\n\u0002\u0010\t\n\u0002\b\t\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\b\u000b\n\u0002\u0010\u0002\n\u0002\b\f\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\b\n\u0002\u0010 \n\u0002\u0018\u0002\n\u0002\b\u0006\u0018\u0000 _2\u00020\u0001:\u0004_`abB1\b\u0000\u0012\u0006\u0010\u0002\u001a\u00020\u0003\u0012\u0006\u0010\u0004\u001a\u00020\u0005\u0012\u0006\u0010\u0006\u001a\u00020\u0007\u0012\u0006\u0010\b\u001a\u00020\u0007\u0012\b\u0010\t\u001a\u0004\u0018\u00010\n¢\u0006\u0002\u0010\u000bJ\u000e\u0010@\u001a\u00020A2\u0006\u0010B\u001a\u00020#J\r\u0010C\u001a\u00020AH\u0000¢\u0006\u0002\bDJ\r\u0010E\u001a\u00020AH\u0000¢\u0006\u0002\bFJ\u0018\u0010G\u001a\u00020A2\u0006\u0010H\u001a\u00020\u000f2\b\u0010\u0014\u001a\u0004\u0018\u00010\u0015J\u001a\u0010I\u001a\u00020\u00072\u0006\u0010\u000e\u001a\u00020\u000f2\b\u0010\u0014\u001a\u0004\u0018\u00010\u0015H\u0002J\u000e\u0010J\u001a\u00020A2\u0006\u0010\u000e\u001a\u00020\u000fJ\u000e\u0010K\u001a\u00020A2\u0006\u0010L\u001a\u00020\nJ\u0006\u0010M\u001a\u00020NJ\u0006\u0010O\u001a\u00020PJ\u0006\u0010,\u001a\u00020QJ\u0016\u0010R\u001a\u00020A2\u0006\u00104\u001a\u00020S2\u0006\u0010T\u001a\u00020\u0003J\u0016\u0010U\u001a\u00020A2\u0006\u0010\t\u001a\u00020\n2\u0006\u0010\b\u001a\u00020\u0007J\u000e\u0010V\u001a\u00020A2\u0006\u0010\u000e\u001a\u00020\u000fJ\u0006\u0010W\u001a\u00020\nJ\u0006\u0010L\u001a\u00020\nJ\r\u0010X\u001a\u00020AH\u0000¢\u0006\u0002\bYJ$\u0010Z\u001a\u00020A2\f\u0010[\u001a\b\u0012\u0004\u0012\u00020]0\\2\u0006\u0010\u0006\u001a\u00020\u00072\u0006\u0010^\u001a\u00020\u0007J\u0006\u0010>\u001a\u00020QR\u0011\u0010\u0004\u001a\u00020\u0005¢\u0006\b\n\u0000\u001a\u0004\b\f\u0010\rR\u001e\u0010\u000e\u001a\u0004\u0018\u00010\u000f8@X\u000e¢\u0006\u000e\n\u0000\u001a\u0004\b\u0010\u0010\u0011\"\u0004\b\u0012\u0010\u0013R\u001c\u0010\u0014\u001a\u0004\u0018\u00010\u0015X\u000e¢\u0006\u000e\n\u0000\u001a\u0004\b\u0016\u0010\u0017\"\u0004\b\u0018\u0010\u0019R\u000e\u0010\u001a\u001a\u00020\u0007X\u000e¢\u0006\u0002\n\u0000R\u0014\u0010\u001b\u001a\b\u0012\u0004\u0012\u00020\n0\u001cX\u0004¢\u0006\u0002\n\u0000R\u0011\u0010\u0002\u001a\u00020\u0003¢\u0006\b\n\u0000\u001a\u0004\b\u001d\u0010\u001eR\u0011\u0010\u001f\u001a\u00020\u00078F¢\u0006\u0006\u001a\u0004\b\u001f\u0010 R\u0011\u0010!\u001a\u00020\u00078F¢\u0006\u0006\u001a\u0004\b!\u0010 R$\u0010$\u001a\u00020#2\u0006\u0010\"\u001a\u00020#@@X\u000e¢\u0006\u000e\n\u0000\u001a\u0004\b%\u0010&\"\u0004\b'\u0010(R$\u0010)\u001a\u00020#2\u0006\u0010\"\u001a\u00020#@@X\u000e¢\u0006\u000e\n\u0000\u001a\u0004\b*\u0010&\"\u0004\b+\u0010(R\u0018\u0010,\u001a\u00060-R\u00020\u0000X\u0004¢\u0006\b\n\u0000\u001a\u0004\b.\u0010/R\u0018\u00100\u001a\u000601R\u00020\u0000X\u0004¢\u0006\b\n\u0000\u001a\u0004\b2\u00103R\u0018\u00104\u001a\u000605R\u00020\u0000X\u0004¢\u0006\b\n\u0000\u001a\u0004\b6\u00107R$\u00108\u001a\u00020#2\u0006\u0010\"\u001a\u00020#@@X\u000e¢\u0006\u000e\n\u0000\u001a\u0004\b9\u0010&\"\u0004\b:\u0010(R$\u0010;\u001a\u00020#2\u0006\u0010\"\u001a\u00020#@@X\u000e¢\u0006\u000e\n\u0000\u001a\u0004\b<\u0010&\"\u0004\b=\u0010(R\u0018\u0010>\u001a\u00060-R\u00020\u0000X\u0004¢\u0006\b\n\u0000\u001a\u0004\b?\u0010/¨\u0006c"}, d2 = {"Lokhttp3/internal/http2/Http2Stream;", "", "id", "", "connection", "Lokhttp3/internal/http2/Http2Connection;", "outFinished", "", "inFinished", "headers", "Lokhttp3/Headers;", "(ILokhttp3/internal/http2/Http2Connection;ZZLokhttp3/Headers;)V", "getConnection", "()Lokhttp3/internal/http2/Http2Connection;", "errorCode", "Lokhttp3/internal/http2/ErrorCode;", "getErrorCode$okhttp", "()Lokhttp3/internal/http2/ErrorCode;", "setErrorCode$okhttp", "(Lokhttp3/internal/http2/ErrorCode;)V", "errorException", "Ljava/io/IOException;", "getErrorException$okhttp", "()Ljava/io/IOException;", "setErrorException$okhttp", "(Ljava/io/IOException;)V", "hasResponseHeaders", "headersQueue", "Ljava/util/ArrayDeque;", "getId", "()I", "isLocallyInitiated", "()Z", "isOpen", "<set-?>", "", "readBytesAcknowledged", "getReadBytesAcknowledged", "()J", "setReadBytesAcknowledged$okhttp", "(J)V", "readBytesTotal", "getReadBytesTotal", "setReadBytesTotal$okhttp", "readTimeout", "Lokhttp3/internal/http2/Http2Stream$StreamTimeout;", "getReadTimeout$okhttp", "()Lokhttp3/internal/http2/Http2Stream$StreamTimeout;", "sink", "Lokhttp3/internal/http2/Http2Stream$FramingSink;", "getSink$okhttp", "()Lokhttp3/internal/http2/Http2Stream$FramingSink;", "source", "Lokhttp3/internal/http2/Http2Stream$FramingSource;", "getSource$okhttp", "()Lokhttp3/internal/http2/Http2Stream$FramingSource;", "writeBytesMaximum", "getWriteBytesMaximum", "setWriteBytesMaximum$okhttp", "writeBytesTotal", "getWriteBytesTotal", "setWriteBytesTotal$okhttp", "writeTimeout", "getWriteTimeout$okhttp", "addBytesToWriteWindow", "", "delta", "cancelStreamIfNecessary", "cancelStreamIfNecessary$okhttp", "checkOutNotClosed", "checkOutNotClosed$okhttp", "close", "rstStatusCode", "closeInternal", "closeLater", "enqueueTrailers", "trailers", "getSink", "Lokio/Sink;", "getSource", "Lokio/Source;", "Lokio/Timeout;", "receiveData", "Lokio/BufferedSource;", "length", "receiveHeaders", "receiveRstStream", "takeHeaders", "waitForIo", "waitForIo$okhttp", "writeHeaders", "responseHeaders", "", "Lokhttp3/internal/http2/Header;", "flushHeaders", "Companion", "FramingSink", "FramingSource", "StreamTimeout", "okhttp"}, k = 1, mv = {1, 4, 0})
/* compiled from: Http2Stream.kt */
public final class Http2Stream {
public static final Companion Companion = new Companion((DefaultConstructorMarker) null);
public static final long EMIT_BUFFER_SIZE = 16384;
private final Http2Connection connection;
private ErrorCode errorCode;
private IOException errorException;
private boolean hasResponseHeaders;
private final ArrayDeque<Headers> headersQueue;
private final int id;
private long readBytesAcknowledged;
private long readBytesTotal;
private final StreamTimeout readTimeout = new StreamTimeout();
private final FramingSink sink;
private final FramingSource source;
private long writeBytesMaximum;
private long writeBytesTotal;
private final StreamTimeout writeTimeout = new StreamTimeout();
public Http2Stream(int i, Http2Connection http2Connection, boolean z, boolean z2, Headers headers) {
Intrinsics.checkNotNullParameter(http2Connection, "connection");
this.id = i;
this.connection = http2Connection;
this.writeBytesMaximum = (long) http2Connection.getPeerSettings().getInitialWindowSize();
ArrayDeque<Headers> arrayDeque = new ArrayDeque<>();
this.headersQueue = arrayDeque;
this.source = new FramingSource((long) http2Connection.getOkHttpSettings().getInitialWindowSize(), z2);
this.sink = new FramingSink(z);
if (headers != null) {
if (!isLocallyInitiated()) {
arrayDeque.add(headers);
return;
}
throw new IllegalStateException("locally-initiated streams shouldn't have headers yet".toString());
} else if (!isLocallyInitiated()) {
throw new IllegalStateException("remotely-initiated streams should have headers".toString());
}
}
public final int getId() {
return this.id;
}
public final Http2Connection getConnection() {
return this.connection;
}
public final long getReadBytesTotal() {
return this.readBytesTotal;
}
public final void setReadBytesTotal$okhttp(long j) {
this.readBytesTotal = j;
}
public final long getReadBytesAcknowledged() {
return this.readBytesAcknowledged;
}
public final void setReadBytesAcknowledged$okhttp(long j) {
this.readBytesAcknowledged = j;
}
public final long getWriteBytesTotal() {
return this.writeBytesTotal;
}
public final void setWriteBytesTotal$okhttp(long j) {
this.writeBytesTotal = j;
}
public final long getWriteBytesMaximum() {
return this.writeBytesMaximum;
}
public final void setWriteBytesMaximum$okhttp(long j) {
this.writeBytesMaximum = j;
}
public final FramingSource getSource$okhttp() {
return this.source;
}
public final FramingSink getSink$okhttp() {
return this.sink;
}
public final StreamTimeout getReadTimeout$okhttp() {
return this.readTimeout;
}
public final StreamTimeout getWriteTimeout$okhttp() {
return this.writeTimeout;
}
public final synchronized ErrorCode getErrorCode$okhttp() {
return this.errorCode;
}
public final void setErrorCode$okhttp(ErrorCode errorCode2) {
this.errorCode = errorCode2;
}
public final IOException getErrorException$okhttp() {
return this.errorException;
}
public final void setErrorException$okhttp(IOException iOException) {
this.errorException = iOException;
}
public final synchronized boolean isOpen() {
if (this.errorCode != null) {
return false;
}
if ((this.source.getFinished$okhttp() || this.source.getClosed$okhttp()) && ((this.sink.getFinished() || this.sink.getClosed()) && this.hasResponseHeaders)) {
return false;
}
return true;
}
public final boolean isLocallyInitiated() {
if (this.connection.getClient$okhttp() == ((this.id & 1) == 1)) {
return true;
}
return false;
}
/* JADX WARNING: Code restructure failed: missing block: B:21:0x0049, code lost:
r0 = move-exception;
*/
/* JADX WARNING: Code restructure failed: missing block: B:22:0x004a, code lost:
r2.readTimeout.exitAndThrowIfTimedOut();
*/
/* JADX WARNING: Code restructure failed: missing block: B:23:0x004f, code lost:
throw r0;
*/
/* JADX WARNING: Exception block dominator not found, dom blocks: [] */
/* Code decompiled incorrectly, please refer to instructions dump. */
public final synchronized okhttp3.Headers takeHeaders() throws java.io.IOException {
/*
r2 = this;
monitor-enter(r2)
okhttp3.internal.http2.Http2Stream$StreamTimeout r0 = r2.readTimeout // Catch:{ all -> 0x0050 }
r0.enter() // Catch:{ all -> 0x0050 }
L_0x0006:
java.util.ArrayDeque<okhttp3.Headers> r0 = r2.headersQueue // Catch:{ all -> 0x0049 }
boolean r0 = r0.isEmpty() // Catch:{ all -> 0x0049 }
if (r0 == 0) goto L_0x0016
okhttp3.internal.http2.ErrorCode r0 = r2.errorCode // Catch:{ all -> 0x0049 }
if (r0 != 0) goto L_0x0016
r2.waitForIo$okhttp() // Catch:{ all -> 0x0049 }
goto L_0x0006
L_0x0016:
okhttp3.internal.http2.Http2Stream$StreamTimeout r0 = r2.readTimeout // Catch:{ all -> 0x0050 }
r0.exitAndThrowIfTimedOut() // Catch:{ all -> 0x0050 }
java.util.ArrayDeque<okhttp3.Headers> r0 = r2.headersQueue // Catch:{ all -> 0x0050 }
java.util.Collection r0 = (java.util.Collection) r0 // Catch:{ all -> 0x0050 }
boolean r0 = r0.isEmpty() // Catch:{ all -> 0x0050 }
r0 = r0 ^ 1
if (r0 == 0) goto L_0x0036
java.util.ArrayDeque<okhttp3.Headers> r0 = r2.headersQueue // Catch:{ all -> 0x0050 }
java.lang.Object r0 = r0.removeFirst() // Catch:{ all -> 0x0050 }
java.lang.String r1 = "headersQueue.removeFirst()"
kotlin.jvm.internal.Intrinsics.checkNotNullExpressionValue(r0, r1) // Catch:{ all -> 0x0050 }
okhttp3.Headers r0 = (okhttp3.Headers) r0 // Catch:{ all -> 0x0050 }
monitor-exit(r2)
return r0
L_0x0036:
java.io.IOException r0 = r2.errorException // Catch:{ all -> 0x0050 }
if (r0 == 0) goto L_0x003d
L_0x003a:
java.lang.Throwable r0 = (java.lang.Throwable) r0 // Catch:{ all -> 0x0050 }
goto L_0x0048
L_0x003d:
okhttp3.internal.http2.StreamResetException r0 = new okhttp3.internal.http2.StreamResetException // Catch:{ all -> 0x0050 }
okhttp3.internal.http2.ErrorCode r1 = r2.errorCode // Catch:{ all -> 0x0050 }
kotlin.jvm.internal.Intrinsics.checkNotNull(r1) // Catch:{ all -> 0x0050 }
r0.<init>(r1) // Catch:{ all -> 0x0050 }
goto L_0x003a
L_0x0048:
throw r0 // Catch:{ all -> 0x0050 }
L_0x0049:
r0 = move-exception
okhttp3.internal.http2.Http2Stream$StreamTimeout r1 = r2.readTimeout // Catch:{ all -> 0x0050 }
r1.exitAndThrowIfTimedOut() // Catch:{ all -> 0x0050 }
throw r0 // Catch:{ all -> 0x0050 }
L_0x0050:
r0 = move-exception
monitor-exit(r2)
throw r0
*/
throw new UnsupportedOperationException("Method not decompiled: okhttp3.internal.http2.Http2Stream.takeHeaders():okhttp3.Headers");
}
public final synchronized Headers trailers() throws IOException {
Headers trailers;
if (this.errorCode != null) {
Throwable th = this.errorException;
if (th == null) {
ErrorCode errorCode2 = this.errorCode;
Intrinsics.checkNotNull(errorCode2);
th = new StreamResetException(errorCode2);
}
throw th;
}
if (this.source.getFinished$okhttp() && this.source.getReceiveBuffer().exhausted() && this.source.getReadBuffer().exhausted()) {
trailers = this.source.getTrailers();
if (trailers == null) {
trailers = Util.EMPTY_HEADERS;
}
} else {
throw new IllegalStateException("too early; can't read the trailers yet".toString());
}
return trailers;
}
public final void enqueueTrailers(Headers headers) {
Intrinsics.checkNotNullParameter(headers, "trailers");
synchronized (this) {
boolean z = true;
if (!this.sink.getFinished()) {
if (headers.size() == 0) {
z = false;
}
if (z) {
this.sink.setTrailers(headers);
Unit unit = Unit.INSTANCE;
} else {
throw new IllegalArgumentException("trailers.size() == 0".toString());
}
} else {
throw new IllegalStateException("already finished".toString());
}
}
}
public final Timeout readTimeout() {
return this.readTimeout;
}
public final Timeout writeTimeout() {
return this.writeTimeout;
}
public final Source getSource() {
return this.source;
}
/* JADX WARNING: Removed duplicated region for block: B:10:0x0011 */
/* JADX WARNING: Removed duplicated region for block: B:14:0x0019 */
/* Code decompiled incorrectly, please refer to instructions dump. */
public final okio.Sink getSink() {
/*
r2 = this;
monitor-enter(r2)
boolean r0 = r2.hasResponseHeaders // Catch:{ all -> 0x0027 }
if (r0 != 0) goto L_0x000e
boolean r0 = r2.isLocallyInitiated() // Catch:{ all -> 0x0027 }
if (r0 == 0) goto L_0x000c
goto L_0x000e
L_0x000c:
r0 = 0
goto L_0x000f
L_0x000e:
r0 = 1
L_0x000f:
if (r0 == 0) goto L_0x0019
kotlin.Unit r0 = kotlin.Unit.INSTANCE // Catch:{ all -> 0x0027 }
monitor-exit(r2)
okhttp3.internal.http2.Http2Stream$FramingSink r0 = r2.sink
okio.Sink r0 = (okio.Sink) r0
return r0
L_0x0019:
java.lang.String r0 = "reply before requesting the sink"
java.lang.IllegalStateException r1 = new java.lang.IllegalStateException // Catch:{ all -> 0x0027 }
java.lang.String r0 = r0.toString() // Catch:{ all -> 0x0027 }
r1.<init>(r0) // Catch:{ all -> 0x0027 }
java.lang.Throwable r1 = (java.lang.Throwable) r1 // Catch:{ all -> 0x0027 }
throw r1 // Catch:{ all -> 0x0027 }
L_0x0027:
r0 = move-exception
monitor-exit(r2)
throw r0
*/
throw new UnsupportedOperationException("Method not decompiled: okhttp3.internal.http2.Http2Stream.getSink():okio.Sink");
}
public final void close(ErrorCode errorCode2, IOException iOException) throws IOException {
Intrinsics.checkNotNullParameter(errorCode2, "rstStatusCode");
if (closeInternal(errorCode2, iOException)) {
this.connection.writeSynReset$okhttp(this.id, errorCode2);
}
}
public final void closeLater(ErrorCode errorCode2) {
Intrinsics.checkNotNullParameter(errorCode2, "errorCode");
if (closeInternal(errorCode2, (IOException) null)) {
this.connection.writeSynResetLater$okhttp(this.id, errorCode2);
}
}
public final synchronized void receiveRstStream(ErrorCode errorCode2) {
Intrinsics.checkNotNullParameter(errorCode2, "errorCode");
if (this.errorCode == null) {
this.errorCode = errorCode2;
notifyAll();
}
}
@Metadata(bv = {1, 0, 3}, d1 = {"\u0000@\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\t\n\u0000\n\u0002\u0010\u000b\n\u0002\b\t\n\u0002\u0018\u0002\n\u0002\b\u0005\n\u0002\u0018\u0002\n\u0002\b\u0005\n\u0002\u0010\u0002\n\u0002\b\u0005\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\b\u0004\u0018\u00002\u00020\u0001B\u0017\b\u0000\u0012\u0006\u0010\u0002\u001a\u00020\u0003\u0012\u0006\u0010\u0004\u001a\u00020\u0005¢\u0006\u0002\u0010\u0006J\b\u0010\u001a\u001a\u00020\u001bH\u0016J\u0018\u0010\u001c\u001a\u00020\u00032\u0006\u0010\u001d\u001a\u00020\u000f2\u0006\u0010\u001e\u001a\u00020\u0003H\u0016J\u001d\u0010\u001f\u001a\u00020\u001b2\u0006\u0010 \u001a\u00020!2\u0006\u0010\u001e\u001a\u00020\u0003H\u0000¢\u0006\u0002\b\"J\b\u0010#\u001a\u00020$H\u0016J\u0010\u0010%\u001a\u00020\u001b2\u0006\u0010\u001c\u001a\u00020\u0003H\u0002R\u001a\u0010\u0007\u001a\u00020\u0005X\u000e¢\u0006\u000e\n\u0000\u001a\u0004\b\b\u0010\t\"\u0004\b\n\u0010\u000bR\u001a\u0010\u0004\u001a\u00020\u0005X\u000e¢\u0006\u000e\n\u0000\u001a\u0004\b\f\u0010\t\"\u0004\b\r\u0010\u000bR\u000e\u0010\u0002\u001a\u00020\u0003X\u0004¢\u0006\u0002\n\u0000R\u0011\u0010\u000e\u001a\u00020\u000f¢\u0006\b\n\u0000\u001a\u0004\b\u0010\u0010\u0011R\u0011\u0010\u0012\u001a\u00020\u000f¢\u0006\b\n\u0000\u001a\u0004\b\u0013\u0010\u0011R\u001c\u0010\u0014\u001a\u0004\u0018\u00010\u0015X\u000e¢\u0006\u000e\n\u0000\u001a\u0004\b\u0016\u0010\u0017\"\u0004\b\u0018\u0010\u0019¨\u0006&"}, d2 = {"Lokhttp3/internal/http2/Http2Stream$FramingSource;", "Lokio/Source;", "maxByteCount", "", "finished", "", "(Lokhttp3/internal/http2/Http2Stream;JZ)V", "closed", "getClosed$okhttp", "()Z", "setClosed$okhttp", "(Z)V", "getFinished$okhttp", "setFinished$okhttp", "readBuffer", "Lokio/Buffer;", "getReadBuffer", "()Lokio/Buffer;", "receiveBuffer", "getReceiveBuffer", "trailers", "Lokhttp3/Headers;", "getTrailers", "()Lokhttp3/Headers;", "setTrailers", "(Lokhttp3/Headers;)V", "close", "", "read", "sink", "byteCount", "receive", "source", "Lokio/BufferedSource;", "receive$okhttp", "timeout", "Lokio/Timeout;", "updateConnectionFlowControl", "okhttp"}, k = 1, mv = {1, 4, 0})
/* compiled from: Http2Stream.kt */
public final class FramingSource implements Source {
private boolean closed;
private boolean finished;
private final long maxByteCount;
private final Buffer readBuffer = new Buffer();
private final Buffer receiveBuffer = new Buffer();
private Headers trailers;
public FramingSource(long j, boolean z) {
this.maxByteCount = j;
this.finished = z;
}
public final boolean getFinished$okhttp() {
return this.finished;
}
public final void setFinished$okhttp(boolean z) {
this.finished = z;
}
public final Buffer getReceiveBuffer() {
return this.receiveBuffer;
}
public final Buffer getReadBuffer() {
return this.readBuffer;
}
public final Headers getTrailers() {
return this.trailers;
}
public final void setTrailers(Headers headers) {
this.trailers = headers;
}
public final boolean getClosed$okhttp() {
return this.closed;
}
public final void setClosed$okhttp(boolean z) {
this.closed = z;
}
/* JADX INFO: finally extract failed */
public long read(Buffer buffer, long j) throws IOException {
IOException iOException;
long j2;
boolean z;
Buffer buffer2 = buffer;
long j3 = j;
Intrinsics.checkNotNullParameter(buffer2, "sink");
if (j3 >= 0) {
do {
iOException = null;
IOException iOException2 = null;
synchronized (Http2Stream.this) {
Http2Stream.this.getReadTimeout$okhttp().enter();
try {
if (Http2Stream.this.getErrorCode$okhttp() != null) {
iOException = Http2Stream.this.getErrorException$okhttp();
if (iOException == null) {
ErrorCode errorCode$okhttp = Http2Stream.this.getErrorCode$okhttp();
Intrinsics.checkNotNull(errorCode$okhttp);
iOException = new StreamResetException(errorCode$okhttp);
}
}
if (!this.closed) {
if (this.readBuffer.size() > 0) {
Buffer buffer3 = this.readBuffer;
j2 = buffer3.read(buffer2, Math.min(j3, buffer3.size()));
Http2Stream http2Stream = Http2Stream.this;
http2Stream.setReadBytesTotal$okhttp(http2Stream.getReadBytesTotal() + j2);
long readBytesTotal = Http2Stream.this.getReadBytesTotal() - Http2Stream.this.getReadBytesAcknowledged();
if (iOException == null && readBytesTotal >= ((long) (Http2Stream.this.getConnection().getOkHttpSettings().getInitialWindowSize() / 2))) {
Http2Stream.this.getConnection().writeWindowUpdateLater$okhttp(Http2Stream.this.getId(), readBytesTotal);
Http2Stream http2Stream2 = Http2Stream.this;
http2Stream2.setReadBytesAcknowledged$okhttp(http2Stream2.getReadBytesTotal());
}
} else if (this.finished || iOException != null) {
j2 = -1;
} else {
Http2Stream.this.waitForIo$okhttp();
j2 = -1;
z = true;
Http2Stream.this.getReadTimeout$okhttp().exitAndThrowIfTimedOut();
Unit unit = Unit.INSTANCE;
}
z = false;
Http2Stream.this.getReadTimeout$okhttp().exitAndThrowIfTimedOut();
Unit unit2 = Unit.INSTANCE;
} else {
throw new IOException("stream closed");
}
} catch (Throwable th) {
Http2Stream.this.getReadTimeout$okhttp().exitAndThrowIfTimedOut();
throw th;
}
}
} while (z);
if (j2 != -1) {
updateConnectionFlowControl(j2);
return j2;
} else if (iOException == null) {
return -1;
} else {
Intrinsics.checkNotNull(iOException);
throw iOException;
}
} else {
throw new IllegalArgumentException(("byteCount < 0: " + j3).toString());
}
}
private final void updateConnectionFlowControl(long j) {
Http2Stream http2Stream = Http2Stream.this;
if (!Util.assertionsEnabled || !Thread.holdsLock(http2Stream)) {
Http2Stream.this.getConnection().updateConnectionFlowControl$okhttp(j);
return;
}
StringBuilder sb = new StringBuilder();
sb.append("Thread ");
Thread currentThread = Thread.currentThread();
Intrinsics.checkNotNullExpressionValue(currentThread, "Thread.currentThread()");
sb.append(currentThread.getName());
sb.append(" MUST NOT hold lock on ");
sb.append(http2Stream);
throw new AssertionError(sb.toString());
}
public final void receive$okhttp(BufferedSource bufferedSource, long j) throws IOException {
boolean z;
boolean z2;
boolean z3;
long j2;
Intrinsics.checkNotNullParameter(bufferedSource, "source");
Http2Stream http2Stream = Http2Stream.this;
if (!Util.assertionsEnabled || !Thread.holdsLock(http2Stream)) {
while (j > 0) {
synchronized (Http2Stream.this) {
z = this.finished;
z2 = true;
z3 = this.readBuffer.size() + j > this.maxByteCount;
Unit unit = Unit.INSTANCE;
}
if (z3) {
bufferedSource.skip(j);
Http2Stream.this.closeLater(ErrorCode.FLOW_CONTROL_ERROR);
return;
} else if (z) {
bufferedSource.skip(j);
return;
} else {
long read = bufferedSource.read(this.receiveBuffer, j);
if (read != -1) {
j -= read;
synchronized (Http2Stream.this) {
if (this.closed) {
j2 = this.receiveBuffer.size();
this.receiveBuffer.clear();
} else {
if (this.readBuffer.size() != 0) {
z2 = false;
}
this.readBuffer.writeAll(this.receiveBuffer);
if (z2) {
Http2Stream http2Stream2 = Http2Stream.this;
if (http2Stream2 != null) {
http2Stream2.notifyAll();
} else {
throw new NullPointerException("null cannot be cast to non-null type java.lang.Object");
}
}
j2 = 0;
}
Unit unit2 = Unit.INSTANCE;
}
if (j2 > 0) {
updateConnectionFlowControl(j2);
}
} else {
throw new EOFException();
}
}
}
return;
}
StringBuilder sb = new StringBuilder();
sb.append("Thread ");
Thread currentThread = Thread.currentThread();
Intrinsics.checkNotNullExpressionValue(currentThread, "Thread.currentThread()");
sb.append(currentThread.getName());
sb.append(" MUST NOT hold lock on ");
sb.append(http2Stream);
throw new AssertionError(sb.toString());
}
public Timeout timeout() {
return Http2Stream.this.getReadTimeout$okhttp();
}
public void close() throws IOException {
long size;
synchronized (Http2Stream.this) {
this.closed = true;
size = this.readBuffer.size();
this.readBuffer.clear();
Http2Stream http2Stream = Http2Stream.this;
if (http2Stream != null) {
http2Stream.notifyAll();
Unit unit = Unit.INSTANCE;
} else {
throw new NullPointerException("null cannot be cast to non-null type java.lang.Object");
}
}
if (size > 0) {
updateConnectionFlowControl(size);
}
Http2Stream.this.cancelStreamIfNecessary$okhttp();
}
}
@Metadata(bv = {1, 0, 3}, d1 = {"\u00006\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u000b\n\u0002\b\t\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0005\n\u0002\u0010\u0002\n\u0002\b\u0004\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0010\t\n\u0000\b\u0004\u0018\u00002\u00020\u0001B\u000f\u0012\b\b\u0002\u0010\u0002\u001a\u00020\u0003¢\u0006\u0002\u0010\u0004J\b\u0010\u0014\u001a\u00020\u0015H\u0016J\u0010\u0010\u0016\u001a\u00020\u00152\u0006\u0010\u0017\u001a\u00020\u0003H\u0002J\b\u0010\u0018\u001a\u00020\u0015H\u0016J\b\u0010\u0019\u001a\u00020\u001aH\u0016J\u0018\u0010\u001b\u001a\u00020\u00152\u0006\u0010\u001c\u001a\u00020\r2\u0006\u0010\u001d\u001a\u00020\u001eH\u0016R\u001a\u0010\u0005\u001a\u00020\u0003X\u000e¢\u0006\u000e\n\u0000\u001a\u0004\b\u0006\u0010\u0007\"\u0004\b\b\u0010\tR\u001a\u0010\u0002\u001a\u00020\u0003X\u000e¢\u0006\u000e\n\u0000\u001a\u0004\b\n\u0010\u0007\"\u0004\b\u000b\u0010\tR\u000e\u0010\f\u001a\u00020\rX\u0004¢\u0006\u0002\n\u0000R\u001c\u0010\u000e\u001a\u0004\u0018\u00010\u000fX\u000e¢\u0006\u000e\n\u0000\u001a\u0004\b\u0010\u0010\u0011\"\u0004\b\u0012\u0010\u0013¨\u0006\u001f"}, d2 = {"Lokhttp3/internal/http2/Http2Stream$FramingSink;", "Lokio/Sink;", "finished", "", "(Lokhttp3/internal/http2/Http2Stream;Z)V", "closed", "getClosed", "()Z", "setClosed", "(Z)V", "getFinished", "setFinished", "sendBuffer", "Lokio/Buffer;", "trailers", "Lokhttp3/Headers;", "getTrailers", "()Lokhttp3/Headers;", "setTrailers", "(Lokhttp3/Headers;)V", "close", "", "emitFrame", "outFinishedOnLastFrame", "flush", "timeout", "Lokio/Timeout;", "write", "source", "byteCount", "", "okhttp"}, k = 1, mv = {1, 4, 0})
/* compiled from: Http2Stream.kt */
public final class FramingSink implements Sink {
private boolean closed;
private boolean finished;
private final Buffer sendBuffer;
private Headers trailers;
public FramingSink(boolean z) {
this.finished = z;
this.sendBuffer = new Buffer();
}
/* JADX INFO: this call moved to the top of the method (can break code semantics) */
public /* synthetic */ FramingSink(Http2Stream http2Stream, boolean z, int i, DefaultConstructorMarker defaultConstructorMarker) {
this((i & 1) != 0 ? false : z);
}
public final boolean getFinished() {
return this.finished;
}
public final void setFinished(boolean z) {
this.finished = z;
}
public final Headers getTrailers() {
return this.trailers;
}
public final void setTrailers(Headers headers) {
this.trailers = headers;
}
public final boolean getClosed() {
return this.closed;
}
public final void setClosed(boolean z) {
this.closed = z;
}
public void write(Buffer buffer, long j) throws IOException {
Intrinsics.checkNotNullParameter(buffer, "source");
Http2Stream http2Stream = Http2Stream.this;
if (!Util.assertionsEnabled || !Thread.holdsLock(http2Stream)) {
this.sendBuffer.write(buffer, j);
while (this.sendBuffer.size() >= 16384) {
emitFrame(false);
}
return;
}
StringBuilder sb = new StringBuilder();
sb.append("Thread ");
Thread currentThread = Thread.currentThread();
Intrinsics.checkNotNullExpressionValue(currentThread, "Thread.currentThread()");
sb.append(currentThread.getName());
sb.append(" MUST NOT hold lock on ");
sb.append(http2Stream);
throw new AssertionError(sb.toString());
}
/* JADX INFO: finally extract failed */
private final void emitFrame(boolean z) throws IOException {
long min;
boolean z2;
synchronized (Http2Stream.this) {
Http2Stream.this.getWriteTimeout$okhttp().enter();
while (Http2Stream.this.getWriteBytesTotal() >= Http2Stream.this.getWriteBytesMaximum() && !this.finished && !this.closed && Http2Stream.this.getErrorCode$okhttp() == null) {
try {
Http2Stream.this.waitForIo$okhttp();
} catch (Throwable th) {
Http2Stream.this.getWriteTimeout$okhttp().exitAndThrowIfTimedOut();
throw th;
}
}
Http2Stream.this.getWriteTimeout$okhttp().exitAndThrowIfTimedOut();
Http2Stream.this.checkOutNotClosed$okhttp();
min = Math.min(Http2Stream.this.getWriteBytesMaximum() - Http2Stream.this.getWriteBytesTotal(), this.sendBuffer.size());
Http2Stream http2Stream = Http2Stream.this;
http2Stream.setWriteBytesTotal$okhttp(http2Stream.getWriteBytesTotal() + min);
z2 = z && min == this.sendBuffer.size() && Http2Stream.this.getErrorCode$okhttp() == null;
Unit unit = Unit.INSTANCE;
}
Http2Stream.this.getWriteTimeout$okhttp().enter();
try {
Http2Stream.this.getConnection().writeData(Http2Stream.this.getId(), z2, this.sendBuffer, min);
} finally {
Http2Stream.this.getWriteTimeout$okhttp().exitAndThrowIfTimedOut();
}
}
public void flush() throws IOException {
Http2Stream http2Stream = Http2Stream.this;
if (!Util.assertionsEnabled || !Thread.holdsLock(http2Stream)) {
synchronized (Http2Stream.this) {
Http2Stream.this.checkOutNotClosed$okhttp();
Unit unit = Unit.INSTANCE;
}
while (this.sendBuffer.size() > 0) {
emitFrame(false);
Http2Stream.this.getConnection().flush();
}
return;
}
StringBuilder sb = new StringBuilder();
sb.append("Thread ");
Thread currentThread = Thread.currentThread();
Intrinsics.checkNotNullExpressionValue(currentThread, "Thread.currentThread()");
sb.append(currentThread.getName());
sb.append(" MUST NOT hold lock on ");
sb.append(http2Stream);
throw new AssertionError(sb.toString());
}
public Timeout timeout() {
return Http2Stream.this.getWriteTimeout$okhttp();
}
/* JADX WARNING: Code restructure failed: missing block: B:21:0x005c, code lost:
if (r10.this$0.getSink$okhttp().finished != false) goto L_0x00c2;
*/
/* JADX WARNING: Code restructure failed: missing block: B:23:0x0068, code lost:
if (r10.sendBuffer.size() <= 0) goto L_0x006c;
*/
/* JADX WARNING: Code restructure failed: missing block: B:24:0x006a, code lost:
r0 = true;
*/
/* JADX WARNING: Code restructure failed: missing block: B:25:0x006c, code lost:
r0 = false;
*/
/* JADX WARNING: Code restructure failed: missing block: B:27:0x006f, code lost:
if (r10.trailers == null) goto L_0x0073;
*/
/* JADX WARNING: Code restructure failed: missing block: B:28:0x0071, code lost:
r4 = true;
*/
/* JADX WARNING: Code restructure failed: missing block: B:29:0x0073, code lost:
r4 = false;
*/
/* JADX WARNING: Code restructure failed: missing block: B:30:0x0074, code lost:
if (r4 == false) goto L_0x009d;
*/
/* JADX WARNING: Code restructure failed: missing block: B:32:0x007e, code lost:
if (r10.sendBuffer.size() <= 0) goto L_0x0084;
*/
/* JADX WARNING: Code restructure failed: missing block: B:33:0x0080, code lost:
emitFrame(false);
*/
/* JADX WARNING: Code restructure failed: missing block: B:34:0x0084, code lost:
r0 = r10.this$0.getConnection();
r2 = r10.this$0.getId();
r4 = r10.trailers;
kotlin.jvm.internal.Intrinsics.checkNotNull(r4);
r0.writeHeaders$okhttp(r2, r1, okhttp3.internal.Util.toHeaderList(r4));
*/
/* JADX WARNING: Code restructure failed: missing block: B:35:0x009d, code lost:
if (r0 == false) goto L_0x00ad;
*/
/* JADX WARNING: Code restructure failed: missing block: B:37:0x00a7, code lost:
if (r10.sendBuffer.size() <= 0) goto L_0x00c2;
*/
/* JADX WARNING: Code restructure failed: missing block: B:38:0x00a9, code lost:
emitFrame(true);
*/
/* JADX WARNING: Code restructure failed: missing block: B:39:0x00ad, code lost:
if (r1 == false) goto L_0x00c2;
*/
/* JADX WARNING: Code restructure failed: missing block: B:40:0x00af, code lost:
r10.this$0.getConnection().writeData(r10.this$0.getId(), true, (okio.Buffer) null, 0);
*/
/* JADX WARNING: Code restructure failed: missing block: B:41:0x00c2, code lost:
r0 = r10.this$0;
*/
/* JADX WARNING: Code restructure failed: missing block: B:42:0x00c4, code lost:
monitor-enter(r0);
*/
/* JADX WARNING: Code restructure failed: missing block: B:44:?, code lost:
r10.closed = true;
r1 = kotlin.Unit.INSTANCE;
*/
/* JADX WARNING: Code restructure failed: missing block: B:45:0x00c9, code lost:
monitor-exit(r0);
*/
/* JADX WARNING: Code restructure failed: missing block: B:46:0x00ca, code lost:
r10.this$0.getConnection().flush();
r10.this$0.cancelStreamIfNecessary$okhttp();
*/
/* JADX WARNING: Code restructure failed: missing block: B:47:0x00d8, code lost:
return;
*/
/* Code decompiled incorrectly, please refer to instructions dump. */
public void close() throws java.io.IOException {
/*
r10 = this;
okhttp3.internal.http2.Http2Stream r0 = okhttp3.internal.http2.Http2Stream.this
boolean r1 = okhttp3.internal.Util.assertionsEnabled
if (r1 == 0) goto L_0x003b
boolean r1 = java.lang.Thread.holdsLock(r0)
if (r1 != 0) goto L_0x000d
goto L_0x003b
L_0x000d:
java.lang.AssertionError r1 = new java.lang.AssertionError
java.lang.StringBuilder r2 = new java.lang.StringBuilder
r2.<init>()
java.lang.String r3 = "Thread "
r2.append(r3)
java.lang.Thread r3 = java.lang.Thread.currentThread()
java.lang.String r4 = "Thread.currentThread()"
kotlin.jvm.internal.Intrinsics.checkNotNullExpressionValue(r3, r4)
java.lang.String r3 = r3.getName()
r2.append(r3)
java.lang.String r3 = " MUST NOT hold lock on "
r2.append(r3)
r2.append(r0)
java.lang.String r0 = r2.toString()
r1.<init>(r0)
java.lang.Throwable r1 = (java.lang.Throwable) r1
throw r1
L_0x003b:
okhttp3.internal.http2.Http2Stream r0 = okhttp3.internal.http2.Http2Stream.this
monitor-enter(r0)
boolean r1 = r10.closed // Catch:{ all -> 0x00dc }
if (r1 == 0) goto L_0x0044
monitor-exit(r0)
return
L_0x0044:
okhttp3.internal.http2.Http2Stream r1 = okhttp3.internal.http2.Http2Stream.this // Catch:{ all -> 0x00dc }
okhttp3.internal.http2.ErrorCode r1 = r1.getErrorCode$okhttp() // Catch:{ all -> 0x00dc }
r2 = 0
r3 = 1
if (r1 != 0) goto L_0x0050
r1 = 1
goto L_0x0051
L_0x0050:
r1 = 0
L_0x0051:
kotlin.Unit r4 = kotlin.Unit.INSTANCE // Catch:{ all -> 0x00dc }
monitor-exit(r0)
okhttp3.internal.http2.Http2Stream r0 = okhttp3.internal.http2.Http2Stream.this
okhttp3.internal.http2.Http2Stream$FramingSink r0 = r0.getSink$okhttp()
boolean r0 = r0.finished
if (r0 != 0) goto L_0x00c2
okio.Buffer r0 = r10.sendBuffer
long r4 = r0.size()
r6 = 0
int r0 = (r4 > r6 ? 1 : (r4 == r6 ? 0 : -1))
if (r0 <= 0) goto L_0x006c
r0 = 1
goto L_0x006d
L_0x006c:
r0 = 0
L_0x006d:
okhttp3.Headers r4 = r10.trailers
if (r4 == 0) goto L_0x0073
r4 = 1
goto L_0x0074
L_0x0073:
r4 = 0
L_0x0074:
if (r4 == 0) goto L_0x009d
L_0x0076:
okio.Buffer r0 = r10.sendBuffer
long r4 = r0.size()
int r0 = (r4 > r6 ? 1 : (r4 == r6 ? 0 : -1))
if (r0 <= 0) goto L_0x0084
r10.emitFrame(r2)
goto L_0x0076
L_0x0084:
okhttp3.internal.http2.Http2Stream r0 = okhttp3.internal.http2.Http2Stream.this
okhttp3.internal.http2.Http2Connection r0 = r0.getConnection()
okhttp3.internal.http2.Http2Stream r2 = okhttp3.internal.http2.Http2Stream.this
int r2 = r2.getId()
okhttp3.Headers r4 = r10.trailers
kotlin.jvm.internal.Intrinsics.checkNotNull(r4)
java.util.List r4 = okhttp3.internal.Util.toHeaderList(r4)
r0.writeHeaders$okhttp(r2, r1, r4)
goto L_0x00c2
L_0x009d:
if (r0 == 0) goto L_0x00ad
L_0x009f:
okio.Buffer r0 = r10.sendBuffer
long r0 = r0.size()
int r2 = (r0 > r6 ? 1 : (r0 == r6 ? 0 : -1))
if (r2 <= 0) goto L_0x00c2
r10.emitFrame(r3)
goto L_0x009f
L_0x00ad:
if (r1 == 0) goto L_0x00c2
okhttp3.internal.http2.Http2Stream r0 = okhttp3.internal.http2.Http2Stream.this
okhttp3.internal.http2.Http2Connection r4 = r0.getConnection()
okhttp3.internal.http2.Http2Stream r0 = okhttp3.internal.http2.Http2Stream.this
int r5 = r0.getId()
r6 = 1
r7 = 0
r8 = 0
r4.writeData(r5, r6, r7, r8)
L_0x00c2:
okhttp3.internal.http2.Http2Stream r0 = okhttp3.internal.http2.Http2Stream.this
monitor-enter(r0)
r10.closed = r3 // Catch:{ all -> 0x00d9 }
kotlin.Unit r1 = kotlin.Unit.INSTANCE // Catch:{ all -> 0x00d9 }
monitor-exit(r0)
okhttp3.internal.http2.Http2Stream r0 = okhttp3.internal.http2.Http2Stream.this
okhttp3.internal.http2.Http2Connection r0 = r0.getConnection()
r0.flush()
okhttp3.internal.http2.Http2Stream r0 = okhttp3.internal.http2.Http2Stream.this
r0.cancelStreamIfNecessary$okhttp()
return
L_0x00d9:
r1 = move-exception
monitor-exit(r0)
throw r1
L_0x00dc:
r1 = move-exception
monitor-exit(r0)
throw r1
*/
throw new UnsupportedOperationException("Method not decompiled: okhttp3.internal.http2.Http2Stream.FramingSink.close():void");
}
}
@Metadata(bv = {1, 0, 3}, d1 = {"\u0000\u0012\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\n\u0002\u0010\t\n\u0000\b\u0003\u0018\u00002\u00020\u0001B\u0007\b\u0002¢\u0006\u0002\u0010\u0002R\u000e\u0010\u0003\u001a\u00020\u0004XT¢\u0006\u0002\n\u0000¨\u0006\u0005"}, d2 = {"Lokhttp3/internal/http2/Http2Stream$Companion;", "", "()V", "EMIT_BUFFER_SIZE", "", "okhttp"}, k = 1, mv = {1, 4, 0})
/* compiled from: Http2Stream.kt */
public static final class Companion {
private Companion() {
}
public /* synthetic */ Companion(DefaultConstructorMarker defaultConstructorMarker) {
this();
}
}
public final void addBytesToWriteWindow(long j) {
this.writeBytesMaximum += j;
if (j > 0) {
notifyAll();
}
}
public final void checkOutNotClosed$okhttp() throws IOException {
if (this.sink.getClosed()) {
throw new IOException("stream closed");
} else if (this.sink.getFinished()) {
throw new IOException("stream finished");
} else if (this.errorCode != null) {
Throwable th = this.errorException;
if (th == null) {
ErrorCode errorCode2 = this.errorCode;
Intrinsics.checkNotNull(errorCode2);
th = new StreamResetException(errorCode2);
}
throw th;
}
}
@Metadata(bv = {1, 0, 3}, d1 = {"\u0000\u001a\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\b\u0004\u0018\u00002\u00020\u0001B\u0005¢\u0006\u0002\u0010\u0002J\u0006\u0010\u0003\u001a\u00020\u0004J\u0012\u0010\u0005\u001a\u00020\u00062\b\u0010\u0007\u001a\u0004\u0018\u00010\u0006H\u0014J\b\u0010\b\u001a\u00020\u0004H\u0014¨\u0006\t"}, d2 = {"Lokhttp3/internal/http2/Http2Stream$StreamTimeout;", "Lokio/AsyncTimeout;", "(Lokhttp3/internal/http2/Http2Stream;)V", "exitAndThrowIfTimedOut", "", "newTimeoutException", "Ljava/io/IOException;", "cause", "timedOut", "okhttp"}, k = 1, mv = {1, 4, 0})
/* compiled from: Http2Stream.kt */
public final class StreamTimeout extends AsyncTimeout {
public StreamTimeout() {
}
/* access modifiers changed from: protected */
public void timedOut() {
Http2Stream.this.closeLater(ErrorCode.CANCEL);
Http2Stream.this.getConnection().sendDegradedPingLater$okhttp();
}
/* access modifiers changed from: protected */
public IOException newTimeoutException(IOException iOException) {
SocketTimeoutException socketTimeoutException = new SocketTimeoutException("timeout");
if (iOException != null) {
socketTimeoutException.initCause(iOException);
}
return socketTimeoutException;
}
public final void exitAndThrowIfTimedOut() throws IOException {
if (exit()) {
throw newTimeoutException((IOException) null);
}
}
}
public final void writeHeaders(List<Header> list, boolean z, boolean z2) throws IOException {
boolean z3;
Intrinsics.checkNotNullParameter(list, "responseHeaders");
if (!Util.assertionsEnabled || !Thread.holdsLock(this)) {
synchronized (this) {
z3 = true;
this.hasResponseHeaders = true;
if (z) {
this.sink.setFinished(true);
}
Unit unit = Unit.INSTANCE;
}
if (!z2) {
synchronized (this.connection) {
if (this.connection.getWriteBytesTotal() < this.connection.getWriteBytesMaximum()) {
z3 = false;
}
Unit unit2 = Unit.INSTANCE;
}
z2 = z3;
}
this.connection.writeHeaders$okhttp(this.id, z, list);
if (z2) {
this.connection.flush();
return;
}
return;
}
StringBuilder sb = new StringBuilder();
sb.append("Thread ");
Thread currentThread = Thread.currentThread();
Intrinsics.checkNotNullExpressionValue(currentThread, "Thread.currentThread()");
sb.append(currentThread.getName());
sb.append(" MUST NOT hold lock on ");
sb.append(this);
throw new AssertionError(sb.toString());
}
private final boolean closeInternal(ErrorCode errorCode2, IOException iOException) {
if (!Util.assertionsEnabled || !Thread.holdsLock(this)) {
synchronized (this) {
if (this.errorCode != null) {
return false;
}
if (this.source.getFinished$okhttp() && this.sink.getFinished()) {
return false;
}
this.errorCode = errorCode2;
this.errorException = iOException;
notifyAll();
Unit unit = Unit.INSTANCE;
this.connection.removeStream$okhttp(this.id);
return true;
}
}
StringBuilder sb = new StringBuilder();
sb.append("Thread ");
Thread currentThread = Thread.currentThread();
Intrinsics.checkNotNullExpressionValue(currentThread, "Thread.currentThread()");
sb.append(currentThread.getName());
sb.append(" MUST NOT hold lock on ");
sb.append(this);
throw new AssertionError(sb.toString());
}
public final void receiveData(BufferedSource bufferedSource, int i) throws IOException {
Intrinsics.checkNotNullParameter(bufferedSource, "source");
if (!Util.assertionsEnabled || !Thread.holdsLock(this)) {
this.source.receive$okhttp(bufferedSource, (long) i);
return;
}
StringBuilder sb = new StringBuilder();
sb.append("Thread ");
Thread currentThread = Thread.currentThread();
Intrinsics.checkNotNullExpressionValue(currentThread, "Thread.currentThread()");
sb.append(currentThread.getName());
sb.append(" MUST NOT hold lock on ");
sb.append(this);
throw new AssertionError(sb.toString());
}
/* JADX WARNING: Removed duplicated region for block: B:15:0x0058 */
/* Code decompiled incorrectly, please refer to instructions dump. */
public final void receiveHeaders(okhttp3.Headers r3, boolean r4) {
/*
r2 = this;
java.lang.String r0 = "headers"
kotlin.jvm.internal.Intrinsics.checkNotNullParameter(r3, r0)
boolean r0 = okhttp3.internal.Util.assertionsEnabled
if (r0 == 0) goto L_0x003e
boolean r0 = java.lang.Thread.holdsLock(r2)
if (r0 != 0) goto L_0x0010
goto L_0x003e
L_0x0010:
java.lang.AssertionError r3 = new java.lang.AssertionError
java.lang.StringBuilder r4 = new java.lang.StringBuilder
r4.<init>()
java.lang.String r0 = "Thread "
r4.append(r0)
java.lang.Thread r0 = java.lang.Thread.currentThread()
java.lang.String r1 = "Thread.currentThread()"
kotlin.jvm.internal.Intrinsics.checkNotNullExpressionValue(r0, r1)
java.lang.String r0 = r0.getName()
r4.append(r0)
java.lang.String r0 = " MUST NOT hold lock on "
r4.append(r0)
r4.append(r2)
java.lang.String r4 = r4.toString()
r3.<init>(r4)
java.lang.Throwable r3 = (java.lang.Throwable) r3
throw r3
L_0x003e:
monitor-enter(r2)
boolean r0 = r2.hasResponseHeaders // Catch:{ all -> 0x0074 }
r1 = 1
if (r0 == 0) goto L_0x004d
if (r4 != 0) goto L_0x0047
goto L_0x004d
L_0x0047:
okhttp3.internal.http2.Http2Stream$FramingSource r0 = r2.source // Catch:{ all -> 0x0074 }
r0.setTrailers(r3) // Catch:{ all -> 0x0074 }
goto L_0x0056
L_0x004d:
r2.hasResponseHeaders = r1 // Catch:{ all -> 0x0074 }
java.util.ArrayDeque<okhttp3.Headers> r0 = r2.headersQueue // Catch:{ all -> 0x0074 }
java.util.Collection r0 = (java.util.Collection) r0 // Catch:{ all -> 0x0074 }
r0.add(r3) // Catch:{ all -> 0x0074 }
L_0x0056:
if (r4 == 0) goto L_0x005d
okhttp3.internal.http2.Http2Stream$FramingSource r3 = r2.source // Catch:{ all -> 0x0074 }
r3.setFinished$okhttp(r1) // Catch:{ all -> 0x0074 }
L_0x005d:
boolean r3 = r2.isOpen() // Catch:{ all -> 0x0074 }
r4 = r2
java.lang.Object r4 = (java.lang.Object) r4 // Catch:{ all -> 0x0074 }
r4.notifyAll() // Catch:{ all -> 0x0074 }
kotlin.Unit r4 = kotlin.Unit.INSTANCE // Catch:{ all -> 0x0074 }
monitor-exit(r2)
if (r3 != 0) goto L_0x0073
okhttp3.internal.http2.Http2Connection r3 = r2.connection
int r4 = r2.id
r3.removeStream$okhttp(r4)
L_0x0073:
return
L_0x0074:
r3 = move-exception
monitor-exit(r2)
throw r3
*/
throw new UnsupportedOperationException("Method not decompiled: okhttp3.internal.http2.Http2Stream.receiveHeaders(okhttp3.Headers, boolean):void");
}
public final void cancelStreamIfNecessary$okhttp() throws IOException {
boolean z;
boolean isOpen;
if (!Util.assertionsEnabled || !Thread.holdsLock(this)) {
synchronized (this) {
z = !this.source.getFinished$okhttp() && this.source.getClosed$okhttp() && (this.sink.getFinished() || this.sink.getClosed());
isOpen = isOpen();
Unit unit = Unit.INSTANCE;
}
if (z) {
close(ErrorCode.CANCEL, (IOException) null);
} else if (!isOpen) {
this.connection.removeStream$okhttp(this.id);
}
} else {
StringBuilder sb = new StringBuilder();
sb.append("Thread ");
Thread currentThread = Thread.currentThread();
Intrinsics.checkNotNullExpressionValue(currentThread, "Thread.currentThread()");
sb.append(currentThread.getName());
sb.append(" MUST NOT hold lock on ");
sb.append(this);
throw new AssertionError(sb.toString());
}
}
public final void waitForIo$okhttp() throws InterruptedIOException {
try {
wait();
} catch (InterruptedException unused) {
Thread.currentThread().interrupt();
throw new InterruptedIOException();
}
}
}
Download file