org.asynchttpclient.shaded.channel.DefaultKeepAliveStrategy Maven / Gradle / Ivy
package org.asynchttpclient.shaded.channel;
import org.asynchttpclient.shaded.io.netty.handler.codec.http.HttpRequest;
import org.asynchttpclient.shaded.io.netty.handler.codec.http.HttpResponse;
import org.asynchttpclient.shaded.io.netty.handler.codec.http.HttpUtil;
import org.asynchttpclient.shaded.Request;
import java.net.InetSocketAddress;
import static org.asynchttpclient.shaded.io.netty.handler.codec.http.HttpHeaderValues.CLOSE;
/**
* Connection strategy implementing standard HTTP 1.0/1.1 behavior.
*/
public class DefaultKeepAliveStrategy implements KeepAliveStrategy {
/**
* Implemented in accordance with RFC 7230 section 6.1 https://tools.ietf.org/html/rfc7230#section-6.1
*/
@Override
public boolean keepAlive(InetSocketAddress remoteAddress, Request ahcRequest, HttpRequest request, HttpResponse response) {
return HttpUtil.isKeepAlive(response)
&& HttpUtil.isKeepAlive(request)
// support non standard Proxy-Connection
&& !response.headers().contains("Proxy-Connection", CLOSE, true);
}
}