Files
rr3-apk/decompiled-community/sources/okhttp3/internal/http/CallServerInterceptor.java
Daniel Elliott c080f0d97f Add Discord community version (64-bit only)
- Added realracing3-community.apk (71.57 MB)
- Removed 32-bit support (armeabi-v7a)
- Only includes arm64-v8a libraries
- Decompiled source code included
- Added README-community.md with analysis
2026-02-18 15:48:36 -08:00

89 lines
3.7 KiB
Java

package okhttp3.internal.http;
import java.net.ProtocolException;
import okhttp3.Interceptor;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.internal.Util;
import okhttp3.internal.connection.Exchange;
import okio.BufferedSink;
import okio.Okio;
import org.apache.http.protocol.HTTP;
/* loaded from: classes5.dex */
public final class CallServerInterceptor implements Interceptor {
public final boolean forWebSocket;
public CallServerInterceptor(boolean z) {
this.forWebSocket = z;
}
@Override // okhttp3.Interceptor
public Response intercept(Interceptor.Chain chain) {
boolean z;
Response build;
RealInterceptorChain realInterceptorChain = (RealInterceptorChain) chain;
Exchange exchange = realInterceptorChain.exchange();
Request request = realInterceptorChain.request();
long currentTimeMillis = System.currentTimeMillis();
exchange.writeRequestHeaders(request);
Response.Builder builder = null;
if (HttpMethod.permitsRequestBody(request.method()) && request.body() != null) {
if (HTTP.EXPECT_CONTINUE.equalsIgnoreCase(request.header(HTTP.EXPECT_DIRECTIVE))) {
exchange.flushRequest();
exchange.responseHeadersStart();
builder = exchange.readResponseHeaders(true);
z = true;
} else {
z = false;
}
if (builder == null) {
if (request.body().isDuplex()) {
exchange.flushRequest();
request.body().writeTo(Okio.buffer(exchange.createRequestBody(request, true)));
} else {
BufferedSink buffer = Okio.buffer(exchange.createRequestBody(request, false));
request.body().writeTo(buffer);
buffer.close();
}
} else {
exchange.noRequestBody();
if (!exchange.connection().isMultiplexed()) {
exchange.noNewExchangesOnConnection();
}
}
} else {
exchange.noRequestBody();
z = false;
}
if (request.body() == null || !request.body().isDuplex()) {
exchange.finishRequest();
}
if (!z) {
exchange.responseHeadersStart();
}
if (builder == null) {
builder = exchange.readResponseHeaders(false);
}
Response build2 = builder.request(request).handshake(exchange.connection().handshake()).sentRequestAtMillis(currentTimeMillis).receivedResponseAtMillis(System.currentTimeMillis()).build();
int code = build2.code();
if (code == 100) {
build2 = exchange.readResponseHeaders(false).request(request).handshake(exchange.connection().handshake()).sentRequestAtMillis(currentTimeMillis).receivedResponseAtMillis(System.currentTimeMillis()).build();
code = build2.code();
}
exchange.responseHeadersEnd(build2);
if (this.forWebSocket && code == 101) {
build = build2.newBuilder().body(Util.EMPTY_RESPONSE).build();
} else {
build = build2.newBuilder().body(exchange.openResponseBody(build2)).build();
}
if ("close".equalsIgnoreCase(build.request().header(HTTP.CONN_DIRECTIVE)) || "close".equalsIgnoreCase(build.header(HTTP.CONN_DIRECTIVE))) {
exchange.noNewExchangesOnConnection();
}
if ((code != 204 && code != 205) || build.body().contentLength() <= 0) {
return build;
}
throw new ProtocolException("HTTP " + code + " had non-zero Content-Length: " + build.body().contentLength());
}
}