private boolean handleHttpResponse(final HttpResponse response,
final Channel channel,
final NettyResponseFuture<?> future,
AsyncHandler<?> handler) throws Exception {
HttpRequest httpRequest = future.getNettyRequest().getHttpRequest();
ProxyServer proxyServer = future.getProxyServer();
logger.debug("\n\nRequest {}\n\nResponse {}\n", httpRequest, response);
future.setHttpHeaders(response.headers());
future.setKeepAlive(connectionStrategy.keepAlive(httpRequest, response));
NettyResponseStatus status = new NettyResponseStatus(future.getUri(), config, response);
int statusCode = response.getStatus().getCode();
Request request = future.getRequest();
Realm realm = request.getRealm() != null ? request.getRealm() : config.getRealm();
NettyResponseHeaders responseHeaders = new NettyResponseHeaders(response.headers());
return exitAfterProcessingFilters(channel, future, handler, status, responseHeaders)
|| exitAfterHandling401(channel, future, response, request, statusCode, realm) ||
exitAfterHandling407(channel, future, response, request, statusCode, proxyServer) ||
exitAfterHandling100(channel, future, statusCode) ||
exitAfterHandlingRedirect(channel, future, response, request, statusCode, realm) ||
exitAfterHandlingConnect(channel, future, request, proxyServer, statusCode, httpRequest) ||
exitAfterHandlingStatus(channel, future, response, handler, status) ||
exitAfterHandlingHeaders(channel, future, response, handler, responseHeaders) ||
exitAfterHandlingBody(channel, future, response, handler);
}