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()); } }